Annotation Type TempDir
@Target({FIELD,PARAMETER})
@Retention(RUNTIME)
@Documented
@API(status=EXPERIMENTAL,
since="5.4")
public @interface TempDir
@TempDir can be used to annotate a non-private field in a test class
or a parameter in a lifecycle method or test method of type Path or
File that should be resolved into a temporary directory.
Please note that @TempDir is not supported on constructor
parameters. Please use field injection instead, by annotating a non-private
instance field with @TempDir.
Temporary Directory Creation
The temporary directory is only created if a field in a test class or a
parameter in a lifecycle method or test method is annotated with
@TempDir. If the field type or parameter type is neither Path
nor File or if the temporary directory cannot be created, an
ExtensionConfigurationException or a
ParameterResolutionException will be thrown as appropriate. In
addition, a ParameterResolutionException will be thrown for a
constructor parameter annotated with @TempDir.
Temporary Directory Scope
The scope of the temporary directory depends on where the first
@TempDir annotation is encountered when executing a test class. The
temporary directory will be shared by all tests in a class when the
annotation is present on a static field or on a parameter of a
@BeforeAll method. Otherwise —
for example, when @TempDir is only used on instance fields or on
parameters in test, @BeforeEach,
or @AfterEach methods — each test
will use its own temporary directory.
Temporary Directory Deletion
When the end of the scope of a temporary directory is reached, i.e. when
the test method or class has finished execution, JUnit will attempt to
recursively delete all files and directories in the temporary directory
and, finally, the temporary directory itself. In case deletion of a file or
directory fails, an IOException will be thrown that will cause the
test or test class to fail.
- Since:
- 5.4