public interface TestContext extends AttributeAccessor, 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.
TestContextManager
,
TestExecutionListener
Modifier and Type | Method and Description |
---|---|
ApplicationContext |
getApplicationContext()
Get the application context for this
test context, possibly cached.
|
Class<?> |
getTestClass()
Get the test class for this test context.
|
Throwable |
getTestException()
Get the exception that was thrown during execution
of the test method.
|
Object |
getTestInstance()
Get the current test instance for this test context.
|
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(Object testInstance,
Method testMethod,
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.
null
)IllegalStateException
- if an error occurs while retrieving the
application contextClass<?> getTestClass()
null
)Object getTestInstance()
Note: this is a mutable property.
null
)updateState(Object, Method, Throwable)
Method getTestMethod()
Note: this is a mutable property.
null
)updateState(Object, Method, Throwable)
@Nullable 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 Object testInstance, @Nullable Method testMethod, @Nullable 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