@TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @InheritedSE public @interface DirtiesContext
ApplicationContext
がダーティであるため、閉じてコンテキストキャッシュから削除する必要があることを示すテストアノテーション。テストでコンテキストが変更された場合は、このアノテーションを使用します。— たとえば、シングルトン Bean の状態の変更、組み込みデータベースの状態の変更など。同じコンテキストをリクエストする後続のテストには、新しいコンテキストが提供されます。
@DirtiesContext
は、同じクラスまたはクラス階層内のクラスレベルおよびメソッドレベルのアノテーションとして使用できます。そのようなシナリオでは、構成された methodMode()
と classMode()
に応じて、そのようなアノテーション付きメソッドの前後、および現在のテストクラスの前後に、ApplicationContext
がダーティとしてマークされます。
このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。
Spring Framework 5.3 以降、このアノテーションはデフォルトでそれを囲むテストクラスから継承されます。詳細については、@NestedTestConfiguration
を参照してください。
BEFORE_CLASS
に設定してクラスレベルで宣言した場合 BEFORE_EACH_TEST_METHOD
に設定してクラスレベルで宣言した場合 BEFORE_METHOD
に設定してメソッドレベルで宣言した場合 AFTER_METHOD
に設定してメソッドレベルで宣言した場合 AFTER_EACH_TEST_METHOD
に設定してクラスレベルで宣言した場合 AFTER_CLASS
に設定してクラスレベルで宣言した場合 BEFORE_*
モードは DirtiesContextBeforeModesTestExecutionListener
でサポートされています。AFTER_*
モードは DirtiesContextTestExecutionListener
でサポートされています。
ContextConfiguration
, DirtiesContextBeforeModesTestExecutionListener
, DirtiesContextTestExecutionListener
修飾子と型 | オプションの要素と説明 |
---|---|
DirtiesContext.ClassMode | classMode テストクラスに @DirtiesContext アノテーションが付けられている場合に使用するモード。 |
DirtiesContext.HierarchyMode | hierarchyMode コンテキストが @ContextHierarchy を介して階層の一部として構成されている場合に使用するコンテキストキャッシュのクリアモード。 |
DirtiesContext.MethodMode | methodMode テストメソッドに @DirtiesContext アノテーションが付けられている場合に使用するモード。 |
public abstract DirtiesContext.MethodMode methodMode
@DirtiesContext
アノテーションが付けられている場合に使用するモード。 デフォルトは AFTER_METHOD
です。
アノテーション付きのテストクラスにメソッドモードを設定しても意味がありません。クラスレベルの制御には、代わりに classMode()
を使用します。
public abstract DirtiesContext.ClassMode classMode
@DirtiesContext
アノテーションが付けられている場合に使用するモード。 デフォルトは AFTER_CLASS
です。
アノテーション付きテストメソッドでクラスモードを設定しても意味がありません。メソッドレベルの制御には、代わりに methodMode()
を使用します。
public abstract DirtiesContext.HierarchyMode hierarchyMode
@ContextHierarchy
を介して階層の一部として構成されている場合に使用するコンテキストキャッシュのクリアモード。 デフォルトは EXHAUSTIVE
です。