アノテーションインターフェース 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アノテーションが付けられている場合に使用するモード。
- 要素の詳細- methodModeDirtiesContext.MethodMode methodModeテストメソッドに- @DirtiesContextアノテーションが付けられている場合に使用するモード。- デフォルトは - AFTER_METHODです。- アノテーション付きのテストクラスにメソッドモードを設定しても意味がありません。クラスレベルの制御には、代わりに - classMode()を使用します。- 導入:
- 4.2
 - デフォルト:
- AFTER_METHOD
 
- classModeDirtiesContext.ClassMode classModeテストクラスに- @DirtiesContextアノテーションが付けられている場合に使用するモード。- デフォルトは - AFTER_CLASSです。- アノテーション付きテストメソッドでクラスモードを設定しても意味がありません。メソッドレベルの制御には、代わりに - methodMode()を使用します。- 導入:
- 3.0
 - デフォルト:
- AFTER_CLASS
 
- hierarchyModeDirtiesContext.HierarchyMode hierarchyModeコンテキストが- @ContextHierarchyを介して階層の一部として構成されている場合に使用するコンテキストキャッシュのクリアモード。- デフォルトは - EXHAUSTIVEです。- 導入:
- 3.2.2
 - デフォルト:
- EXHAUSTIVE