アノテーションインターフェース 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
関連事項:
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。
    boolean
    expression() を評価するために、現在のテストに関連付けられている ApplicationContext を積極的にロードする必要があるかどうか。
    このテストが有効になっている理由。
    expression() のエイリアス。reason() および loadContext() が指定されていない場合にのみ使用することを意図しています。
  • 要素の詳細

    • value

      @AliasFor("expression") StringSE value
      expression() のエイリアス。reason() および loadContext() が指定されていない場合にのみ使用することを意図しています。
      関連事項:
      デフォルト:
      ""
    • expression

      @AliasFor("value") StringSE expression
      アノテーション付きのテストクラスまたはテストメソッドが有効かどうかを判断するために評価される式。

      式が Boolean.TRUESE または "true" に等しい StringSE(大文字と小文字を区別しない)と評価される場合、テストは有効になります。

      式は次のいずれかになります。

      • Spring 式言語(SpEL)式 — 例:
        @EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
      • Spring Environment で利用可能なプロパティのプレースホルダー — 例:
        @EnabledIf("${smoke.tests.enabled}")
      • テキストリテラル — 例:
        @EnabledIf("true")

      ただし、@EnabledIf("false") は @Disabled と同等であり、@EnabledIf("true") は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルは、実際的な値はゼロであることに注意してください。

      関連事項:
      デフォルト:
      ""
    • reason

      StringSE reason
      このテストが有効になっている理由。
      関連事項:
      デフォルト:
      ""
    • loadContext

      boolean loadContext
      expression() を評価するために、現在のテストに関連付けられている ApplicationContext を積極的にロードする必要があるかどうか。

      デフォルトは false であるため、テストアプリケーションコンテキストが不必要に読み込まれることはありません。式がシステムプロパティまたは環境変数のみに基づいている場合、またはテストのアプリケーションコンテキストで Bean と相互作用しない場合、テストを無効にしてしまうと時間の浪費になるため、コンテキストを時期尚早にロードする必要はありません。

      関連事項:
      デフォルト:
      false