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: *

* * * @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