アノテーションインターフェース 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 でサポートされています。
このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。
このアノテーションは、デフォルトで、囲んでいるテストクラスから継承されます。詳細については、@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