diff --git a/org.springframework.test/src/main/java/org/springframework/test/context/TestContextManager.java b/org.springframework.test/src/main/java/org/springframework/test/context/TestContextManager.java
index 81f8fa1cd6e..ee48c6b842b 100644
--- a/org.springframework.test/src/main/java/org/springframework/test/context/TestContextManager.java
+++ b/org.springframework.test/src/main/java/org/springframework/test/context/TestContextManager.java
@@ -47,10 +47,9 @@ import org.springframework.util.Assert;
* execution points:
*
*
- * - {@link #beforeTestClass() before test class execution}:
- * prior to any before class methods of a particular testing
- * framework (e.g., JUnit 4's {@link org.junit.BeforeClass
- * @BeforeClass})
+ * - {@link #beforeTestClass() before test class execution}: prior to any
+ * before class methods of a particular testing framework (e.g., JUnit
+ * 4's {@link org.junit.BeforeClass @BeforeClass})
* - {@link #prepareTestInstance(Object) test instance preparation}:
* immediately following instantiation of the test instance
* - {@link #beforeTestMethod(Object,Method) before test method execution}:
@@ -60,9 +59,8 @@ import org.springframework.util.Assert;
* execution}: after any after methods of a particular testing
* framework (e.g., JUnit 4's {@link org.junit.After @After})
* - {@link #afterTestClass() after test class execution}: after any
- * after class methods of a particular testing
- * framework (e.g., JUnit 4's {@link org.junit.AfterClass
- * @AfterClass})
+ * after class methods of a particular testing framework (e.g., JUnit
+ * 4's {@link org.junit.AfterClass @AfterClass})
*
*
* @author Sam Brannen
@@ -152,6 +150,17 @@ public class TestContextManager {
return Collections.unmodifiableList(this.testExecutionListeners);
}
+ /**
+ * Gets a copy of the {@link TestExecutionListener TestExecutionListeners}
+ * registered for this TestContextManager in reverse order.
+ */
+ private List getReversedTestExecutionListeners() {
+ List listenersReversed = new ArrayList(
+ getTestExecutionListeners());
+ Collections.reverse(listenersReversed);
+ return listenersReversed;
+ }
+
/**
* Retrieves an array of newly instantiated {@link TestExecutionListener
* TestExecutionListeners} for the specified {@link Class class}. If
@@ -264,6 +273,7 @@ public class TestContextManager {
if (logger.isTraceEnabled()) {
logger.trace("beforeTestClass(): class [" + testClass + "]");
}
+ getTestContext().updateState(null, null, null);
for (TestExecutionListener testExecutionListener : getTestExecutionListeners()) {
try {
@@ -393,14 +403,10 @@ public class TestContextManager {
}
getTestContext().updateState(testInstance, testMethod, exception);
+ Exception afterTestMethodException = null;
// Traverse the TestExecutionListeners in reverse order to ensure proper
// "wrapper"-style execution of listeners.
- List listenersReversed = new ArrayList(
- getTestExecutionListeners());
- Collections.reverse(listenersReversed);
-
- Exception afterTestMethodException = null;
- for (TestExecutionListener testExecutionListener : listenersReversed) {
+ for (TestExecutionListener testExecutionListener : getReversedTestExecutionListeners()) {
try {
testExecutionListener.afterTestMethod(getTestContext());
}
@@ -440,15 +446,12 @@ public class TestContextManager {
if (logger.isTraceEnabled()) {
logger.trace("afterTestClass(): class [" + testClass + "]");
}
-
- // Traverse the TestExecutionListeners in reverse order to ensure proper
- // "wrapper"-style execution of listeners.
- List listenersReversed = new ArrayList(
- getTestExecutionListeners());
- Collections.reverse(listenersReversed);
+ getTestContext().updateState(null, null, null);
Exception afterTestClassException = null;
- for (TestExecutionListener testExecutionListener : listenersReversed) {
+ // Traverse the TestExecutionListeners in reverse order to ensure proper
+ // "wrapper"-style execution of listeners.
+ for (TestExecutionListener testExecutionListener : getReversedTestExecutionListeners()) {
try {
testExecutionListener.afterTestClass(getTestContext());
}
@@ -465,4 +468,4 @@ public class TestContextManager {
}
}
-}
+}
\ No newline at end of file