@AutoClose is used to indicate that an annotated field will be
automatically closed after test execution.
@AutoClose fields may be either static or non-static. If
the value of an @AutoClose field is null when it is evaluated
the field will be ignored, but a warning message will be logged to inform you.
By default, @AutoClose expects the value of the annotated field to
implement a close() method that will be invoked to close the resource.
However, developers can customize the name of the close method via the
value attribute. For example, @AutoClose("shutdown") instructs
JUnit to look for a shutdown() method to close the resource.
@AutoClose may be used as a meta-annotation in order to create a
custom composed annotation that inherits the semantics of
@AutoClose.
@AutoClose fields are inherited from superclasses. Furthermore,
@AutoClose fields from subclasses will be closed before
@AutoClose fields in superclasses.
When multiple @AutoClose fields exist within a given test class,
the order in which the resources are closed depends on an algorithm that is
deterministic but intentionally nonobvious. This ensures that subsequent runs
of a test suite close resources in the same order, thereby allowing for
repeatable builds.
The extension that closes @AutoClose fields implements the
AfterAllCallback and
TestInstancePreDestroyCallback extension APIs. Consequently, a static
@AutoClose field will be closed after all tests in the current test
class have completed, effectively after @AfterAll methods have executed
for the test class. A non-static @AutoClose field will be closed before
the current test class instance is destroyed. Specifically, if the test class
is configured with
@TestInstance(Lifecycle.
semantics, a non-static @AutoClose field will be closed after the
execution of each test method, test factory method, or test template method.
However, if the test class is configured with
@TestInstance(Lifecycle.
semantics, a non-static @AutoClose field will not be closed until the
current test class instance is no longer needed, which means after
@AfterAll methods and after all static @AutoClose fields
have been closed.
| Modifier and Type | Method and Description |
|---|---|
| public String | Returns: the name of the method to invoke to close the resourceSpecify the name of the method to invoke to close the resource. |
| value | back to summary |
|---|---|
| public String value() Specify the name of the method to invoke to close the resource. The default value is
| |