Annotation Type DirtiesContext
@Target({TYPE,METHOD}) @Retention(RUNTIME) @Documented @Inherited public @interface DirtiesContext
Test annotation which indicates that theApplicationContext
associated with a test is dirty and should therefore be closed and removed from the context cache.Use this annotation if a test has modified the context — for example, by modifying the state of a singleton bean, modifying the state of an embedded database, etc. Subsequent tests that request the same context will be supplied a new context.
@DirtiesContext
may be used as a class-level and method-level annotation within the same class or class hierarchy. In such scenarios, theApplicationContext
will be marked as dirty before or after any such annotated method as well as before or after the current test class, depending on the configuredmethodMode()
andclassMode()
.As of Spring Framework 4.0, this annotation may be used as a meta-annotation to create custom composed annotations.
Supported Test Phases
- Before current test class: when declared at the class level with class mode set to
BEFORE_CLASS
- Before each test method in current test class: when declared at the class level with class mode set to
BEFORE_EACH_TEST_METHOD
- Before current test method: when declared at the method level with method mode set to
BEFORE_METHOD
- After current test method: when declared at the method level with method mode set to
AFTER_METHOD
- After each test method in current test class: when declared at the class level with class mode set to
AFTER_EACH_TEST_METHOD
- After current test class: when declared at the class level with class mode set to
AFTER_CLASS
BEFORE_*
modes are supported by theDirtiesContextBeforeModesTestExecutionListener
;AFTER_*
modes are supported by theDirtiesContextTestExecutionListener
.- Since:
- 2.0
- Author:
- Sam Brannen, Rod Johnson
- See Also:
ContextConfiguration
,DirtiesContextBeforeModesTestExecutionListener
,DirtiesContextTestExecutionListener
- Before current test class: when declared at the class level with class mode set to
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description DirtiesContext.ClassMode
classMode
The mode to use when a test class is annotated with@DirtiesContext
.DirtiesContext.HierarchyMode
hierarchyMode
The context cache clearing mode to use when a context is configured as part of a hierarchy via@ContextHierarchy
.DirtiesContext.MethodMode
methodMode
The mode to use when a test method is annotated with@DirtiesContext
.
Element Detail
methodMode
DirtiesContext.MethodMode methodMode
The mode to use when a test method is annotated with@DirtiesContext
.Defaults to
AFTER_METHOD
.Setting the method mode on an annotated test class has no meaning. For class-level control, use
classMode()
instead.- Since:
- 4.2
- Default:
- org.springframework.test.annotation.DirtiesContext.MethodMode.AFTER_METHOD
classMode
DirtiesContext.ClassMode classMode
The mode to use when a test class is annotated with@DirtiesContext
.Defaults to
AFTER_CLASS
.Setting the class mode on an annotated test method has no meaning. For method-level control, use
methodMode()
instead.- Since:
- 3.0
- Default:
- org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_CLASS
hierarchyMode
DirtiesContext.HierarchyMode hierarchyMode
The context cache clearing mode to use when a context is configured as part of a hierarchy via@ContextHierarchy
.Defaults to
EXHAUSTIVE
.- Since:
- 3.2.2
- Default:
- org.springframework.test.annotation.DirtiesContext.HierarchyMode.EXHAUSTIVE