アノテーションインターフェース DirtiesContext


テストに関連付けられた ApplicationContextダーティであるため、閉じてコンテキストキャッシュから削除する必要があることを示すテストアノテーション。

テストでコンテキストが変更された場合は、このアノテーションを使用します。— たとえば、シングルトン Bean の状態の変更、組み込みデータベースの状態の変更など。同じコンテキストをリクエストする後続のテストには、新しいコンテキストが提供されます。

@DirtiesContext は、同じクラスまたはクラス階層内のクラスレベルおよびメソッドレベルのアノテーションとして使用できます。このようなシナリオでは、構成された methodMode() および classMode() に応じて、そのようなアノテーション付きメソッドの前後、および現在のテストクラスの前後で、ApplicationContext がダーティとしてマークされます。@DirtiesContext がクラスレベルとメソッドレベルの両方で宣言されている場合、両方のアノテーションから構成されたテストフェーズが尊重されます。例: クラスモードが BEFORE_EACH_TEST_METHOD に設定され、メソッドモードが AFTER_METHOD に設定されている場合、コンテキストは、指定されたテストメソッドの前後の両方でダーティとしてマークされます。

サポートされているテストフェーズ

  • 現在のテストクラスの前 : クラスモードを BEFORE_CLASS に設定してクラスレベルで宣言した場合
  • 現在のテストクラスの各テストメソッドの前 : クラスモードを BEFORE_EACH_TEST_METHOD に設定してクラスレベルで宣言した場合
  • 現在のテストメソッドの前 : メソッドモードを BEFORE_METHOD に設定してメソッドレベルで宣言した場合
  • 現在のテストメソッドの後 : メソッドモードを AFTER_METHOD に設定してメソッドレベルで宣言した場合
  • 現在のテストクラスの各テストメソッドの後 : クラスモードを AFTER_EACH_TEST_METHOD に設定してクラスレベルで宣言した場合
  • 現在のテストクラスの後 : クラスモードを AFTER_CLASS に設定してクラスレベルで宣言した場合

BEFORE_* モードは DirtiesContextBeforeModesTestExecutionListener でサポートされています。AFTER_* モードは DirtiesContextTestExecutionListener でサポートされています。

このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。

Spring Framework 5.3 以降、このアノテーションはデフォルトでそれを囲むテストクラスから継承されます。詳細については、@NestedTestConfiguration を参照してください。

導入:
2.0
作成者:
Sam Brannen, Rod Johnson
関連事項:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static enum
    テストクラスにアノテーションを付けるために使用されるときに @DirtiesContext がどのように解釈されるかを決定するモードを定義します
    static enum
    コンテキストが @ContextHierarchy を介して階層の一部として構成されているテストで @DirtiesContext が使用されるときに、コンテキストキャッシュをクリアする方法を決定するモードを定義します
    static enum
    テストメソッドにアノテーションを付けるために使用されるときに @DirtiesContext がどのように解釈されるかを決定するモードを定義します
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    テストクラスに @DirtiesContext アノテーションが付けられている場合に使用するモード
    コンテキストが @ContextHierarchy を介して階層の一部として構成されている場合に使用するコンテキストキャッシュのクリアモード
    テストメソッドに @DirtiesContext アノテーションが付けられている場合に使用するモード
  • 要素の詳細

    • methodMode

      テストメソッドに @DirtiesContext アノテーションが付けられている場合に使用するモード

      デフォルトは AFTER_METHOD です。

      アノテーション付きのテストクラスにメソッドモードを設定しても意味がありません。クラスレベルの制御には、代わりに classMode() を使用します。

      導入:
      4.2
      デフォルト:
      AFTER_METHOD
    • classMode

      テストクラスに @DirtiesContext アノテーションが付けられている場合に使用するモード

      デフォルトは AFTER_CLASS です。

      アノテーション付きテストメソッドでクラスモードを設定しても意味がありません。メソッドレベルの制御には、代わりに methodMode() を使用します。

      導入:
      3.0
      デフォルト:
      AFTER_CLASS
    • hierarchyMode

      コンテキストが @ContextHierarchy を介して階層の一部として構成されている場合に使用するコンテキストキャッシュのクリアモード

      デフォルトは EXHAUSTIVE です。

      導入:
      3.2.2
      デフォルト:
      EXHAUSTIVE