Conditional Test Execution
The ExecutionCondition extension API in JUnit Jupiter allows
developers to either enable or disable a test class or test method based on certain
conditions programmatically. The simplest example of such a condition is the built-in
DisabledCondition which supports the @Disabled annotation (see
Disabling Tests).
In addition to @Disabled, JUnit Jupiter also supports several other annotation-based
conditions in the org.junit.jupiter.api.condition package that allow developers to
enable or disable test classes and test methods declaratively. If you wish to provide
details about why they might be disabled, every annotation associated with these built-in
conditions has a disabledReason attribute available for that purpose.
When multiple ExecutionCondition extensions are registered, a test class or test method
is disabled as soon as one of the conditions returns disabled. If a test class is
disabled, all test methods within that class are automatically disabled as well. If a test
method is disabled, that prevents execution of the test method and method-level lifecycle
callbacks such as @BeforeEach methods, @AfterEach methods, and corresponding extension
APIs. However, that does not prevent the test class from being instantiated, and it does
not prevent the execution of class-level lifecycle callbacks such as @BeforeAll methods,
@AfterAll methods, and corresponding extension APIs.
See ExecutionCondition and the following sections for
details.
|
Composed Annotations
Note that any of the conditional annotations listed in the following sections may also
be used as a meta-annotation in order to create a custom composed annotation. For
example, the |
|
Conditional annotations in JUnit Jupiter are not |
|
Unless otherwise stated, each of the conditional annotations listed in the following
sections can only be declared once on a given test interface, test class, or test method.
If a conditional annotation is directly present, indirectly present, or meta-present
multiple times on a given element, only the first such annotation discovered by JUnit will
be used; any additional declarations will be silently ignored. Note, however, that each
conditional annotation may be used in conjunction with other conditional annotations in
the |