public class TestContextManager extends Object
TestContextManager
is the main entry point into the
Spring TestContext Framework, which provides support for loading and
accessing application contexts
, dependency
injection of test instances,
transactional
execution of test methods, etc.
Specifically, a TestContextManager
is responsible for managing a
single TestContext
and signaling events to all registered
TestExecutionListeners
at well defined test
execution points:
before test class execution
: prior to any
before class methods of a particular testing framework (e.g., JUnit
4's @BeforeClass
)test instance preparation
:
immediately following instantiation of the test instancebefore test method execution
:
prior to any before methods of a particular testing framework (e.g.,
JUnit 4's @Before
)after test method
execution
: after any after methods of a particular testing
framework (e.g., JUnit 4's @After
)after test class execution
: after any
after class methods of a particular testing framework (e.g., JUnit
4's @AfterClass
)TestContext
,
TestExecutionListeners
,
ContextConfiguration
,
TransactionConfiguration
Constructor and Description |
---|
TestContextManager(Class<?> testClass)
Delegates to
TestContextManager(Class, String) with a value of
null for the default ContextLoader class name. |
TestContextManager(Class<?> testClass,
String defaultContextLoaderClassName)
Constructs a new
TestContextManager for the specified test class
and automatically registers the
TestExecutionListeners configured for the test class
via the @TestExecutionListeners annotation. |
Modifier and Type | Method and Description |
---|---|
void |
afterTestClass()
Hook for post-processing a test class after execution of all
tests within the class.
|
void |
afterTestMethod(Object testInstance,
Method testMethod,
Throwable exception)
Hook for post-processing a test after execution of the supplied
test method , for example for tearing down test fixtures,
ending a transaction, etc. |
void |
beforeTestClass()
Hook for pre-processing a test class before execution of any
tests within the class.
|
void |
beforeTestMethod(Object testInstance,
Method testMethod)
Hook for pre-processing a test before execution of the supplied
test method , for example for setting up test fixtures,
starting a transaction, etc. |
protected Set<Class<? extends TestExecutionListener>> |
getDefaultTestExecutionListenerClasses()
Determine the default
TestExecutionListener classes. |
protected TestContext |
getTestContext()
Returns the
TestContext managed by this
TestContextManager . |
List<TestExecutionListener> |
getTestExecutionListeners()
Get the current
TestExecutionListeners
registered for this TestContextManager . |
void |
prepareTestInstance(Object testInstance)
Hook for preparing a test instance prior to execution of any individual
test methods, for example for injecting dependencies, etc.
|
void |
registerTestExecutionListeners(TestExecutionListener... testExecutionListeners)
Register the supplied
TestExecutionListeners
by appending them to the set of listeners used by this TestContextManager . |
public TestContextManager(Class<?> testClass)
TestContextManager(Class, String)
with a value of
null
for the default ContextLoader
class name.public TestContextManager(Class<?> testClass, String defaultContextLoaderClassName)
TestContextManager
for the specified test class
and automatically registers
the
TestExecutionListeners
configured for the test class
via the @TestExecutionListeners
annotation.testClass
- the test class to be manageddefaultContextLoaderClassName
- the name of the default
ContextLoader
class to use (may be null
)registerTestExecutionListeners(TestExecutionListener...)
,
retrieveTestExecutionListeners(Class)
protected final TestContext getTestContext()
TestContext
managed by this
TestContextManager
.public void registerTestExecutionListeners(TestExecutionListener... testExecutionListeners)
TestExecutionListeners
by appending them to the set of listeners used by this TestContextManager
.public final List<TestExecutionListener> getTestExecutionListeners()
TestExecutionListeners
registered for this TestContextManager
.
Allows for modifications, e.g. adding a listener to the beginning of the list. However, make sure to keep the list stable while actually executing tests.
protected Set<Class<? extends TestExecutionListener>> getDefaultTestExecutionListenerClasses()
TestExecutionListener
classes.public void beforeTestClass() throws Exception
@BeforeClass
).
An attempt will be made to give each registered
TestExecutionListener
a chance to pre-process the test class
execution. If a listener throws an exception, however, the remaining
registered listeners will not be called.
Exception
- if a registered TestExecutionListener throws an
exceptiongetTestExecutionListeners()
public void prepareTestInstance(Object testInstance) throws Exception
The managed TestContext
will be updated with the supplied
testInstance
.
An attempt will be made to give each registered
TestExecutionListener
a chance to prepare the test instance. If a
listener throws an exception, however, the remaining registered listeners
will not be called.
testInstance
- the test instance to prepare (never null
)Exception
- if a registered TestExecutionListener throws an exceptiongetTestExecutionListeners()
public void beforeTestMethod(Object testInstance, Method testMethod) throws Exception
test method
, for example for setting up test fixtures,
starting a transaction, etc. Should be called prior to any
framework-specific before methods (e.g., methods annotated with
JUnit's @Before
).
The managed TestContext
will be updated with the supplied
testInstance
and testMethod
.
An attempt will be made to give each registered
TestExecutionListener
a chance to pre-process the test method
execution. If a listener throws an exception, however, the remaining
registered listeners will not be called.
testInstance
- the current test instance (never null
)testMethod
- the test method which is about to be executed on the
test instanceException
- if a registered TestExecutionListener throws an exceptiongetTestExecutionListeners()
public void afterTestMethod(Object testInstance, Method testMethod, Throwable exception) throws Exception
test method
, for example for tearing down test fixtures,
ending a transaction, etc. Should be called after any framework-specific
after methods (e.g., methods annotated with JUnit's
@After
).
The managed TestContext
will be updated with the supplied
testInstance
, testMethod
, and
exception
.
Each registered TestExecutionListener
will be given a chance to
post-process the test method execution. If a listener throws an
exception, the remaining registered listeners will still be called, but
the first exception thrown will be tracked and rethrown after all
listeners have executed. Note that registered listeners will be executed
in the opposite order in which they were registered.
testInstance
- the current test instance (never null
)testMethod
- the test method which has just been executed on the
test instanceexception
- the exception that was thrown during execution of the
test method or by a TestExecutionListener, or null
if none
was thrownException
- if a registered TestExecutionListener throws an exceptiongetTestExecutionListeners()
public void afterTestClass() throws Exception
@AfterClass
).
Each registered TestExecutionListener
will be given a chance to
post-process the test class. If a listener throws an exception, the
remaining registered listeners will still be called, but the first
exception thrown will be tracked and rethrown after all listeners have
executed. Note that registered listeners will be executed in the opposite
order in which they were registered.
Exception
- if a registered TestExecutionListener throws an exceptiongetTestExecutionListeners()