@Target(value={TYPE,METHOD}) @Retention(value=RUNTIME) @Documented @ExtendWith(value=EnabledIfCondition.class) public @interface EnabledIf
@EnabledIf
は、アノテーション付きテストクラスまたはテストメソッドが有効であることを通知するために使用され、指定された expression()
が true
と評価された場合に実行する必要があります。クラスレベルで適用すると、そのクラス内のすべてのテストメソッドもデフォルトで自動的に有効になります。
基本的な例については、expression()
の Javadoc を参照してください。
このアノテーションは、カスタム合成アノテーションを作成するためのメタアノテーションとして使用できます。例: カスタム @EnabledOnMac
アノテーションは次のように作成できます。
@Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @EnabledIf( expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}", reason = "Enabled on Mac OS" ) public @interface EnabledOnMac {}
SpringExtension
, DisabledIf
, Disabled
修飾子と型 | オプションの要素と説明 |
---|---|
java.lang.String | expression アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。 |
boolean | loadContext expression() を評価するために、現在のテストに関連付けられている ApplicationContext を積極的にロードする必要があるかどうか。 |
java.lang.String | reason このテストが有効になっている理由。 |
java.lang.String | value |
@AliasFor(value="expression") public abstract java.lang.String value
expression()
@AliasFor(value="value") public abstract java.lang.String expression
式が Boolean.TRUE
または "true"
に等しい String
(大文字と小文字を区別しない)と評価された場合、テストが有効になります。
式は次のいずれかになります。
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
Environment
で利用可能なプロパティのプレースホルダー — 例:@EnabledIf("${smoke.tests.enabled}")
@EnabledIf("true")
ただし、@EnabledIf("false")
は @Disabled
と同等であり、@EnabledIf("true")
は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルは、実際的な値はゼロであることに注意してください。
reason()
, loadContext()
, value()
public abstract java.lang.String reason
expression()
public abstract boolean loadContext
expression()
を評価するために、現在のテストに関連付けられている ApplicationContext
を積極的にロードする必要があるかどうか。 デフォルトは false
であるため、テストアプリケーションコンテキストが不必要に読み込まれることはありません。式がシステムプロパティまたは環境変数のみに基づいている場合、またはテストのアプリケーションコンテキストで Bean と相互作用しない場合、テストを無効にしてしまうと時間の浪費になるため、コンテキストを時期尚早にロードする必要はありません。
expression()