Annotation Type ExtendWith
-
@Target({TYPE,METHOD,FIELD,PARAMETER}) @Retention(RUNTIME) @Documented @Inherited @Repeatable(Extensions.class) @API(status=STABLE, since="5.0") public @interface ExtendWith
@ExtendWith
is a repeatable annotation that is used to register extensions for the annotated test class, test interface, test method, parameter, or field.Annotated parameters are supported in test class constructors, in test methods, and in
@BeforeAll
,@AfterAll
,@BeforeEach
, and@AfterEach
lifecycle methods.@ExtendWith
fields may be eitherstatic
or non-static.Inheritance
@ExtendWith
fields are inherited from superclasses as long as they are not hidden or overridden. Furthermore,@ExtendWith
fields from superclasses will be registered before@ExtendWith
fields in subclasses.Registration Order
When
@ExtendWith
is present on a test class, test interface, or test method or on a parameter in a test method or lifecycle method, the corresponding extensions will be registered in the order in which the@ExtendWith
annotations are discovered. For example, if a test class is annotated with@ExtendWith(A.class)
and then with@ExtendWith(B.class)
, extensionA
will be registered before extensionB
.By default, if multiple extensions are registered on fields via
@ExtendWith
, they will be ordered using an algorithm that is deterministic but intentionally nonobvious. This ensures that subsequent runs of a test suite execute extensions in the same order, thereby allowing for repeatable builds. However, there are times when extensions need to be registered in an explicit order. To achieve that, you can annotate@ExtendWith
fields with@Order
. Any@ExtendWith
field not annotated with@Order
will be ordered using thedefault
order value. Note that@RegisterExtension
fields can also be ordered with@Order
, relative to@ExtendWith
fields and other@RegisterExtension
fields.Supported Extension APIs
ExecutionCondition
InvocationInterceptor
BeforeAllCallback
AfterAllCallback
BeforeEachCallback
AfterEachCallback
BeforeTestExecutionCallback
AfterTestExecutionCallback
TestInstanceFactory
TestInstancePostProcessor
TestInstancePreDestroyCallback
ParameterResolver
TestExecutionExceptionHandler
TestTemplateInvocationContextProvider
- Since:
- 5.0
- See Also:
RegisterExtension
,Extension