Interface TestContext
- All Superinterfaces:
- AttributeAccessor,- Serializable
- All Known Implementing Classes:
- DefaultTestContext
TestContext encapsulates the context in which a test is executed,
 agnostic of the actual testing framework in use.
 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.
 
As of Spring Framework 6.1, concrete implementations are highly encouraged to
 override setMethodInvoker(MethodInvoker) and getMethodInvoker().
- Since:
- 2.5
- Author:
- Sam Brannen
- See Also:
- 
Method SummaryModifier and TypeMethodDescriptionGet the application context for this test context, possibly cached.default MethodInvokerGet theMethodInvokerto use.Class<?> Get the test class for this test context.Get the exception that was thrown during execution of the test method.Get the current test instance for this test context.Get the current test method for this test context.default booleanDetermine if the application context for this test context is known to be available.voidmarkApplicationContextDirty(@Nullable 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.default voidCall this method to signal that the test class is no longer using the application context associated with this test context.default voidpublishEvent(Function<TestContext, ? extends ApplicationEvent> eventFactory) Publish theApplicationEventcreated by the giveneventFactoryto the application context for this test context.default voidsetMethodInvoker(MethodInvoker methodInvoker) Set theMethodInvokerto use.voidupdateState(@Nullable Object testInstance, @Nullable Method testMethod, @Nullable Throwable testException) Update this test context to reflect the state of the currently executing test.Methods inherited from interface org.springframework.core.AttributeAccessorattributeNames, computeAttribute, getAttribute, hasAttribute, removeAttribute, setAttribute
- 
Method Details- 
hasApplicationContextdefault boolean hasApplicationContext()Determine if the application context for this test context is known to be available.If this method returns true, a subsequent invocation ofgetApplicationContext()ormarkApplicationContextUnused()should succeed.The default implementation of this method always returns false. CustomTestContextimplementations are therefore highly encouraged to override this method with a more meaningful implementation. Note that the standardTestContextimplementation in Spring overrides this method appropriately.- Returns:
- trueif the application context has already been loaded
- Since:
- 5.2
- See Also:
 
- 
getApplicationContextApplicationContext getApplicationContext()Get the application context for this test context, possibly cached.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. - Returns:
- the application context (never null)
- Throws:
- IllegalStateException- if an error occurs while retrieving the application context
- See Also:
 
- 
publishEventPublish theApplicationEventcreated by the giveneventFactoryto the application context for this test context.The ApplicationEventwill only be published if the application context for this test context is available.- Parameters:
- eventFactory- factory for lazy creation of the- ApplicationEvent
- Since:
- 5.2
- See Also:
 
- 
getTestClassClass<?> getTestClass()Get the test class for this test context.- Returns:
- the test class (never null)
 
- 
getTestInstanceObject getTestInstance()Get the current test instance for this test context.Note: this is a mutable property. - Returns:
- the current test instance (never null)
- See Also:
 
- 
getTestMethodMethod getTestMethod()Get the current test method for this test context.Note: this is a mutable property. - Returns:
- the current test method (never null)
- See Also:
 
- 
getTestExceptionGet the exception that was thrown during execution of the test method.Note: this is a mutable property. - Returns:
- the exception that was thrown, or nullif no exception was thrown
- See Also:
 
- 
markApplicationContextUnuseddefault void markApplicationContextUnused()Call this method to signal that the test class is no longer using the application context associated with this test context.This informs the context cache that the application context can be safely stopped if no other test classes are actively using the same application context. This method is intended to be invoked after execution of the test class has ended and should not be invoked unless the application context for this test context is known to be available. This feature is primarily intended for use within the framework. - Since:
- 7.0
- See Also:
 
- 
markApplicationContextDirtyCall this method to signal that the application context associated with this test context is dirty and should be removed from the context cache.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. - Parameters:
- hierarchyMode- the context cache clearing mode to be applied if the context is part of a hierarchy (may be- null)
 
- 
updateStatevoid updateState(@Nullable Object testInstance, @Nullable Method testMethod, @Nullable Throwable testException) Update this test context to reflect the state of the currently executing test.WARNING: This method should only be invoked by the TestContextManager.Caution: concurrent invocations of this method might not be thread-safe, depending on the underlying implementation. - Parameters:
- 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- nullif no exception was thrown
 
- 
setMethodInvokerSet theMethodInvokerto use.By default, this method does nothing. Concrete implementations should track the supplied MethodInvokerand return it fromgetMethodInvoker(). Note that the standardTestContextimplementation in Spring overrides this method appropriately.- Since:
- 6.1
 
- 
getMethodInvokerGet theMethodInvokerto use.By default, this method returns MethodInvoker.DEFAULT_INVOKER.Concrete implementations should return the MethodInvokersupplied tosetMethodInvoker(MethodInvoker). Note that the standardTestContextimplementation in Spring overrides this method appropriately.- Since:
- 6.1
 
 
-