@Target(value={TYPE,METHOD}) @Retention(value=RUNTIME) @Documented @ExtendWith(value=DisabledIfCondition.class) public @interface DisabledIf
@DisabledIf
is used to signal that the annotated test class or test
method is disabled and should not be executed if the supplied
expression()
evaluates to true
.
When applied at the class level, all test methods within that class are automatically disabled as well.
For basic examples, see the Javadoc for expression()
.
This annotation may be used as a meta-annotation to create
custom composed annotations. For example, a custom
@DisabledOnMac
annotation can be created as follows.
@Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @DisabledIf( expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}", reason = "Disabled on Mac OS" ) public @interface DisabledOnMac {}
SpringExtension
,
EnabledIf
,
Disabled
Modifier and Type | Optional Element and Description |
---|---|
java.lang.String |
expression
The expression that will be evaluated to determine if the annotated test
class or test method is disabled.
|
boolean |
loadContext
Whether the
ApplicationContext associated with the current test
should be eagerly loaded in order to evaluate the expression() . |
java.lang.String |
reason
The reason this test is disabled.
|
java.lang.String |
value
|
@AliasFor(value="expression") public abstract java.lang.String value
expression()
@AliasFor(value="value") public abstract java.lang.String expression
If the expression evaluates to Boolean.TRUE
or a String
equal to "true"
(ignoring case), the test will be disabled.
Expressions can be any of the following.
@DisabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
Environment
— for example:
@DisabledIf("${smoke.tests.disabled}")
@DisabledIf("true")
Note, however, that a text literal which is not the result of
dynamic resolution of a property placeholder is of zero practical value
since @DisabledIf("true")
is equivalent to @Disabled
and @DisabledIf("false")
is logically meaningless.
reason()
,
loadContext()
,
value()
public abstract java.lang.String reason
expression()
public abstract boolean loadContext
ApplicationContext
associated with the current test
should be eagerly loaded in order to evaluate the expression()
.
Defaults to false
so that test application contexts are not
eagerly loaded unnecessarily. If an expression is based solely on system
properties or environment variables or does not interact with beans in
the test's application context, there is no need to load the context
prematurely since doing so would be a waste of time if the test ends up
being disabled.
expression()