spring-framework / org.springframework.test.context.junit.jupiter / DisabledIf

DisabledIf

@Target([AnnotationTarget.CLASS, AnnotationTarget.FILE, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER]) @ExtendWith(DisabledIfCondition) class 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 {} 

Author
Sam Brannen

Author
Tadaya Tsuyukubo

Since
5.0

See Also
SpringExtensionEnabledIforg.junit.jupiter.api.Disabled

Constructors

<init>

DisabledIf(value: String, expression: String, reason: String, loadContext: Boolean)

@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 {} 

Properties

expression

val expression: String

The expression that will be evaluated to determine if the annotated test class or test method is disabled.

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.

  • Spring Expression Language (SpEL) expression — for example:
    @DisabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
  • Placeholder for a property available in the Spring org.springframework.core.env.Environment — for example:
    @DisabledIf("${smoke.tests.disabled}")
  • Text literal — for example:
    @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.

loadContext

val loadContext: Boolean

Whether the 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.

reason

val reason: String

The reason this test is disabled.

value

val value: String

Alias for #expression; only intended to be used if #reason and #loadContext are not specified.