アノテーションインターフェース 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 {}
@EnabledOnMac
は、可能なことの例としてのみ意図されていることに注意してください。その正確な使用例がある場合は、JUnit Jupiter に組み込まれている @EnabledOnOs(MAC)
サポートを使用してください。
JUnit 5.7 以降、JUnit Jupiter にも @EnabledIf
という名前の条件アノテーションがあります。Spring の @EnabledIf
サポートを使用する場合は、正しいパッケージからアノテーション型をインポートするようにしてください。
- 導入:
- 5.0
- 作成者:
- Sam Brannen
- 関連事項:
SpringExtension
DisabledIf
Disabled
EnabledIf
オプション要素の概要
オプション要素修飾子と型オプションの要素説明アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。boolean
expression()
を評価するために、現在のテストに関連付けられているApplicationContext
を積極的にロードする必要があるかどうか。このテストが有効になっている理由。
要素の詳細
value
- 関連事項:
- デフォルト:
- ""
expression
アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。式が
Boolean.TRUE
SE または"true"
に等しいString
SE(大文字と小文字を区別しない)と評価される場合、テストは有効になります。式は次のいずれかになります。
- Spring 式言語(SpEL)式 — 例:
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
- Spring
Environment
で利用可能なプロパティのプレースホルダー — 例:@EnabledIf("${smoke.tests.enabled}")
- テキストリテラル — 例:
@EnabledIf("true")
ただし、
@EnabledIf("false")
は@Disabled
と同等であり、@EnabledIf("true")
は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルは、実際的な値はゼロであることに注意してください。- デフォルト:
- ""
- Spring 式言語(SpEL)式 — 例:
reason
StringSE reasonこのテストが有効になっている理由。- 関連事項:
- デフォルト:
- ""
loadContext
boolean loadContextexpression()
を評価するために、現在のテストに関連付けられているApplicationContext
を積極的にロードする必要があるかどうか。デフォルトは
false
であるため、テストアプリケーションコンテキストが不必要に読み込まれることはありません。式がシステムプロパティまたは環境変数のみに基づいている場合、またはテストのアプリケーションコンテキストで Bean と相互作用しない場合、テストを無効にしてしまうと時間の浪費になるため、コンテキストを時期尚早にロードする必要はありません。- 関連事項:
- デフォルト:
- false