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