public interface TestContext extends AttributeAccessor, java.io.Serializable
TestContext
encapsulates the context in which a test is executed,
agnostic of the actual testing framework in use.
As of Spring Framework 5.0, concrete implementations are highly encouraged
to implement a copy constructor in order to allow the immutable state
and attributes of a TestContext
to be used as a template for additional
contexts created for parallel test execution. The copy constructor must accept a
single argument of the type of the concrete implementation. Any implementation
that does not provide a copy constructor will likely fail in an environment
that executes tests concurrently.
Modifier and Type | Method and Description |
---|---|
ApplicationContext |
getApplicationContext()
Get the application context for this
test context, possibly cached.
|
java.lang.Class<?> |
getTestClass()
Get the test class for this test context.
|
java.lang.Throwable |
getTestException()
Get the exception that was thrown during execution
of the test method.
|
java.lang.Object |
getTestInstance()
Get the current test instance for this test context.
|
java.lang.reflect.Method |
getTestMethod()
Get the current test method for this test context.
|
void |
markApplicationContextDirty(DirtiesContext.HierarchyMode hierarchyMode)
Call this method to signal that the application
context associated with this test context is dirty and should be
removed from the context cache.
|
void |
updateState(java.lang.Object testInstance,
java.lang.reflect.Method testMethod,
java.lang.Throwable testException)
Update this test context to reflect the state of the currently executing test.
|
attributeNames, getAttribute, hasAttribute, removeAttribute, setAttribute
ApplicationContext getApplicationContext()
Implementations of this method are responsible for loading the application context if the corresponding context has not already been loaded, potentially caching the context as well.
java.lang.IllegalStateException
- if an error occurs while retrieving the
application contextjava.lang.Class<?> getTestClass()
null
)java.lang.Object getTestInstance()
Note: this is a mutable property.
null
)updateState(Object, Method, Throwable)
java.lang.reflect.Method getTestMethod()
Note: this is a mutable property.
updateState(Object, Method, Throwable)
@Nullable java.lang.Throwable getTestException()
Note: this is a mutable property.
null
if no exception was thrownupdateState(Object, Method, Throwable)
void markApplicationContextDirty(@Nullable DirtiesContext.HierarchyMode hierarchyMode)
Do this 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.
hierarchyMode
- the context cache clearing mode to be applied if the
context is part of a hierarchy (may be null
)void updateState(@Nullable java.lang.Object testInstance, @Nullable java.lang.reflect.Method testMethod, @Nullable java.lang.Throwable testException)
Caution: concurrent invocations of this method might not be thread-safe, depending on the underlying implementation.
testInstance
- the current test instance (may be null
)testMethod
- the current test method (may be null
)testException
- the exception that was thrown in the test method,
or null
if no exception was thrown