@TempDir can be used to annotate a field in a test class or a parameter
in a test class constructor, lifecycle method, or test method of type
Path or File that should be resolved into a temporary directory.
The temporary directory is only created if a field in a test class or a
parameter in a test class constructor, lifecycle method, or test method is
annotated with @TempDir. An ExtensionConfigurationException or
a ParameterResolutionException will be thrown in one of the following
cases:
Path nor File.final.File and a custom
factory is used, which creates a temporary
directory that does not belong to the
default file system.
By default, a separate temporary directory is created for every declaration
of the @TempDir annotation. For better isolation when using
@TestInstance(Lifecycle.
semantics, you can annotate an instance field or a parameter in the test class
constructor with @TempDir so that each test method uses a separate
temporary directory. Alternatively, if you want to share a temporary directory
across all tests in a test class, you should declare the annotation on a
static field or on a parameter of a
@BeforeAll method.
By default, when the end of the scope of a temporary directory is reached,
— when the test method or class has finished execution — JUnit will
attempt to clean up the temporary directory by recursively deleting all files
and directories in the temporary directory and, finally, the temporary directory
itself. Symbolic and other types of links, such as junctions on Windows, are
not followed. A warning is logged when deleting a link that targets a
location outside the temporary directory. In case deletion of a file or
directory fails, an IOException will be thrown that will cause the
test or test class to fail.
The cleanup attribute allows you to configure the CleanupMode.
If the cleanup mode is set to NEVER, the temporary
directory will not be cleaned up after the test completes. If the cleanup mode is
set to ON_SUCCESS, the temporary directory will
only be cleaned up if the test completes successfully. By default, the
ALWAYS clean up mode will be used, but this can be
configured globally by setting the junit.jupiter.tempdir.cleanup.mode.default
configuration parameter.
| Modifier and Type | Field and Description |
|---|---|
| public static final String | DEFAULT_CLEANUP_MODE_PROPERTY_NAME
The name of the configuration parameter that is used to configure the
default |
| public static final String | DEFAULT_FACTORY_PROPERTY_NAME
Property name used to set the default temporary directory factory class name: Supported Values Supported values include fully qualified class names for types that
implement |
| Modifier and Type | Method and Description |
|---|---|
| public CleanupMode | |
| public Class |
| DEFAULT_CLEANUP_MODE_PROPERTY_NAME | back to summary |
|---|---|
| public static final String DEFAULT_CLEANUP_MODE_PROPERTY_NAME The name of the configuration parameter that is used to configure the
default If this configuration parameter is not set,
| |
| DEFAULT_FACTORY_PROPERTY_NAME | back to summary |
|---|---|
| public static final String DEFAULT_FACTORY_PROPERTY_NAME Property name used to set the default temporary directory factory class name: Supported ValuesSupported values include fully qualified class names for types that
implement If not specified, the default is
| |
| cleanup | back to summary |
|---|---|
| public CleanupMode cleanup() How the temporary directory gets cleaned up after the test completes. | |
| factory | back to summary |
|---|---|
| public Class Factory for the temporary directory. Defaults to As an alternative to setting this attribute, a global
| |