@TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @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| 修飾子と型 | オプションの要素と説明 |
|---|---|
StringSE | expression アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。 |
boolean | loadContextexpression() を評価するために、現在のテストに関連付けられている ApplicationContext を積極的にロードする必要があるかどうか。 |
StringSE | reason このテストが有効になっている理由。 |
StringSE | value |
@AliasFor(value="expression") public abstract StringSE value
expression()@AliasFor(value="value") public abstract StringSE expression
式が Boolean.TRUESE または "true" に等しい StringSE(大文字と小文字を区別しない)と評価される場合、テストは有効になります。
式は次のいずれかになります。
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")Environment で利用可能なプロパティのプレースホルダー — 例:@EnabledIf("${smoke.tests.enabled}")@EnabledIf("true") ただし、@EnabledIf("false") は @Disabled と同等であり、@EnabledIf("true") は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルは、実際的な値はゼロであることに注意してください。
reason(), loadContext(), value()public abstract StringSE reason
expression()public abstract boolean loadContext
expression() を評価するために、現在のテストに関連付けられている ApplicationContext を積極的にロードする必要があるかどうか。 デフォルトは false であるため、テストアプリケーションコンテキストが不必要に読み込まれることはありません。式がシステムプロパティまたは環境変数のみに基づいている場合、またはテストのアプリケーションコンテキストで Bean と相互作用しない場合、テストを無効にしてしまうと時間の浪費になるため、コンテキストを時期尚早にロードする必要はありません。
expression()