diff --git a/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java b/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java index b25c882605..28bcdded46 100644 --- a/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java +++ b/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -389,8 +389,8 @@ public class TestContextManager { * have executed, the first caught exception will be rethrown with any * subsequent exceptions {@linkplain Throwable#addSuppressed suppressed} in * the first exception. - *

Note that registered listeners will be executed in the opposite - * order in which they were registered. + *

Note that listeners will be executed in the opposite order in which they + * were registered. * @param testInstance the current test instance * @param testMethod the test method which has just been executed on the * test instance @@ -459,7 +459,8 @@ public class TestContextManager { * have executed, the first caught exception will be rethrown with any * subsequent exceptions {@linkplain Throwable#addSuppressed suppressed} in * the first exception. - *

Note that registered listeners will be executed in the opposite + *

Note that listeners will be executed in the opposite order in which they + * were registered. * @param testInstance the current test instance * @param testMethod the test method which has just been executed on the * test instance @@ -517,7 +518,8 @@ public class TestContextManager { * have executed, the first caught exception will be rethrown with any * subsequent exceptions {@linkplain Throwable#addSuppressed suppressed} in * the first exception. - *

Note that registered listeners will be executed in the opposite + *

Note that listeners will be executed in the opposite order in which they + * were registered. * @throws Exception if a registered TestExecutionListener throws an exception * @since 3.0 * @see #getTestExecutionListeners() diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java index 802d9cf977..736223358c 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,15 +37,21 @@ import org.springframework.test.context.support.DependencyInjectionTestExecution public class BeanOverrideTestExecutionListener extends AbstractTestExecutionListener { /** - * Returns {@code 1950}, which ensures that the {@code BeanOverrideTestExecutionListener} + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 1950; + + /** + * Returns {@value #ORDER}, which ensures that the {@code BeanOverrideTestExecutionListener} * is ordered after the * {@link org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener - * DirtiesContextBeforeModesTestExecutionListener} and just before the + * DirtiesContextBeforeModesTestExecutionListener} and before the * {@link DependencyInjectionTestExecutionListener}. */ @Override public int getOrder() { - return 1950; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java index a77be4608a..556cd3c964 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java @@ -49,6 +49,13 @@ import org.springframework.util.ClassUtils; */ public class MockitoResetTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener + * ({@code Ordered.LOWEST_PRECEDENCE - 100}): {@value}. + * @since 6.2.3 + */ + public static final int ORDER = Ordered.LOWEST_PRECEDENCE - 100; + private static final Log logger = LogFactory.getLog(MockitoResetTestExecutionListener.class); /** @@ -73,7 +80,10 @@ public class MockitoResetTestExecutionListener extends AbstractTestExecutionList /** - * Returns {@code Ordered.LOWEST_PRECEDENCE - 100}. + * Returns {@value #ORDER}, which ensures that the + * {@code MockitoResetTestExecutionListener} is ordered after all standard + * {@code TestExecutionListener} implementations. + * @see #ORDER */ @Override public int getOrder() { diff --git a/spring-test/src/main/java/org/springframework/test/context/event/ApplicationEventsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/event/ApplicationEventsTestExecutionListener.java index c2362297e0..4e890e661f 100644 --- a/spring-test/src/main/java/org/springframework/test/context/event/ApplicationEventsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/event/ApplicationEventsTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,6 +48,12 @@ import org.springframework.util.Assert; */ public class ApplicationEventsTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 1800; + /** * Attribute name for a {@link TestContext} attribute which indicates * whether the test class for the given test context is annotated with @@ -61,11 +67,18 @@ public class ApplicationEventsTestExecutionListener extends AbstractTestExecutio /** - * Returns {@code 1800}. + * Returns {@value #ORDER}, which ensures that the {@code ApplicationEventsTestExecutionListener} + * is ordered after the + * {@link org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener + * DirtiesContextBeforeModesTestExecutionListener} and before the + * {@link org.springframework.test.context.bean.override.BeanOverrideTestExecutionListener + * BeanOverrideTestExecutionListener} and the + * {@link org.springframework.test.context.support.DependencyInjectionTestExecutionListener + * DependencyInjectionTestExecutionListener}. */ @Override public final int getOrder() { - return 1800; + return ORDER; } @Override diff --git a/spring-test/src/main/java/org/springframework/test/context/event/EventPublishingTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/event/EventPublishingTestExecutionListener.java index 953b5710ce..7988745320 100644 --- a/spring-test/src/main/java/org/springframework/test/context/event/EventPublishingTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/event/EventPublishingTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -98,11 +98,22 @@ import org.springframework.test.context.support.AbstractTestExecutionListener; public class EventPublishingTestExecutionListener extends AbstractTestExecutionListener { /** - * Returns {@code 10000}. + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 10_000; + + /** + * Returns {@value #ORDER}, which ensures that the {@code EventPublishingTestExecutionListener} + * is ordered after the + * {@link org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener + * SqlScriptsTestExecutionListener} and before the + * {@link org.springframework.test.context.bean.override.mockito.MockitoResetTestExecutionListener + * MockitoResetTestExecutionListener}. */ @Override public final int getOrder() { - return 10_000; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index 5e741cec4a..0bf31964b2 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -117,6 +117,12 @@ import static org.springframework.util.ResourceUtils.CLASSPATH_URL_PREFIX; */ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListener implements AotTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 5000; + private static final String SLASH = "/"; private static final Log logger = LogFactory.getLog(SqlScriptsTestExecutionListener.class); @@ -126,11 +132,16 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen /** - * Returns {@code 5000}. + * Returns {@value #ORDER}, which ensures that the {@code SqlScriptsTestExecutionListener} + * is ordered after the + * {@link org.springframework.test.context.transaction.TransactionalTestExecutionListener + * TransactionalTestExecutionListener} and before the + * {@link org.springframework.test.context.event.EventPublishingTestExecutionListener + * EventPublishingTestExecutionListener}. */ @Override public final int getOrder() { - return 5000; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/observation/MicrometerObservationRegistryTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/observation/MicrometerObservationRegistryTestExecutionListener.java index 889f3ba3fd..974dc8dd67 100644 --- a/spring-test/src/main/java/org/springframework/test/context/observation/MicrometerObservationRegistryTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/observation/MicrometerObservationRegistryTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,6 +44,12 @@ import org.springframework.util.ReflectionUtils; */ class MicrometerObservationRegistryTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 2500; + private static final Log logger = LogFactory.getLog(MicrometerObservationRegistryTestExecutionListener.class); /** @@ -106,11 +112,16 @@ class MicrometerObservationRegistryTestExecutionListener extends AbstractTestExe /** - * Returns {@code 2500}. + * Returns {@value #ORDER}, which ensures that the + * {@code MicrometerObservationRegistryTestExecutionListener} is ordered after the + * {@link org.springframework.test.context.support.DependencyInjectionTestExecutionListener + * DependencyInjectionTestExecutionListener} and before the + * {@link org.springframework.test.context.support.DirtiesContextTestExecutionListener + * DirtiesContextTestExecutionListener}. */ @Override public final int getOrder() { - return 2500; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/support/CommonCachesTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/support/CommonCachesTestExecutionListener.java index 34436b929e..a3bd7bed77 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/CommonCachesTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/CommonCachesTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,14 +36,24 @@ import org.springframework.test.context.TestContext; public class CommonCachesTestExecutionListener extends AbstractTestExecutionListener { /** - * Returns {@code 3005}. + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 3005; + + + /** + * Returns {@value #ORDER}, which ensures that the {@code CommonCachesTestExecutionListener} + * is ordered after the + * {@link DirtiesContextTestExecutionListener DirtiesContextTestExecutionListener} and before the + * {@link org.springframework.test.context.transaction.TransactionalTestExecutionListener + * TransactionalTestExecutionListener}. */ @Override public final int getOrder() { - return 3005; + return ORDER; } - @Override public void afterTestClass(TestContext testContext) throws Exception { if (testContext.hasApplicationContext()) { diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.java index 916dbd50d0..6504fd8686 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,6 +39,12 @@ import org.springframework.test.context.aot.AotTestContextInitializers; */ public class DependencyInjectionTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 2000; + /** * Attribute name for a {@link TestContext} attribute which indicates * whether the dependencies of a test instance should be @@ -63,11 +69,18 @@ public class DependencyInjectionTestExecutionListener extends AbstractTestExecut /** - * Returns {@code 2000}. + * Returns {@value #ORDER}, which ensures that the {@code DependencyInjectionTestExecutionListener} + * is ordered after the + * {@link DirtiesContextBeforeModesTestExecutionListener DirtiesContextBeforeModesTestExecutionListener} + * and the {@link org.springframework.test.context.bean.override.BeanOverrideTestExecutionListener + * BeanOverrideTestExecutionListener} and before the + * {@link org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener + * MicrometerObservationRegistryTestExecutionListener} and the + * {@link DirtiesContextTestExecutionListener DirtiesContextTestExecutionListener}. */ @Override public final int getOrder() { - return 2000; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextBeforeModesTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextBeforeModesTestExecutionListener.java index 54fca1b8e1..cb21dcd953 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextBeforeModesTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextBeforeModesTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,11 +55,24 @@ import static org.springframework.test.annotation.DirtiesContext.MethodMode.BEFO public class DirtiesContextBeforeModesTestExecutionListener extends AbstractDirtiesContextTestExecutionListener { /** - * Returns {@code 1500}. + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 1500; + + /** + * Returns {@value #ORDER}, which ensures that the + * {@code DirtiesContextBeforeModesTestExecutionListener} is ordered after the + * {@link org.springframework.test.context.web.ServletTestExecutionListener + * ServletTestExecutionListener} and before the + * {@link org.springframework.test.context.event.ApplicationEventsTestExecutionListener + * ApplicationEventsTestExecutionListener} and the + * {@link org.springframework.test.context.bean.override.BeanOverrideTestExecutionListener + * BeanOverrideTestExecutionListener}. */ @Override public final int getOrder() { - return 1500; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextTestExecutionListener.java index 91aa1e794d..290103c030 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DirtiesContextTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,11 +55,20 @@ import static org.springframework.test.annotation.DirtiesContext.MethodMode.AFTE public class DirtiesContextTestExecutionListener extends AbstractDirtiesContextTestExecutionListener { /** - * Returns {@code 3000}. + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 3000; + + /** + * Returns {@value #ORDER}, which ensures that the {@code DirtiesContextTestExecutionListener} + * is ordered after the + * {@link DependencyInjectionTestExecutionListener DependencyInjectionTestExecutionListener} + * and before the {@link CommonCachesTestExecutionListener CommonCachesTestExecutionListener}. */ @Override public final int getOrder() { - return 3000; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java index 26ca58dcc3..85c3b73ccd 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -148,6 +148,12 @@ import org.springframework.util.StringUtils; */ public class TransactionalTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 4000; + private static final Log logger = LogFactory.getLog(TransactionalTestExecutionListener.class); // Do not require @Transactional test methods to be public. @@ -175,11 +181,16 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis /** - * Returns {@code 4000}. + * Returns {@value #ORDER}, which ensures that the {@code TransactionalTestExecutionListener} + * is ordered after the + * {@link org.springframework.test.context.support.CommonCachesTestExecutionListener + * CommonCachesTestExecutionListener} and before the + * {@link org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener + * SqlScriptsTestExecutionListener}. */ @Override public final int getOrder() { - return 4000; + return ORDER; } /** diff --git a/spring-test/src/main/java/org/springframework/test/context/web/ServletTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/web/ServletTestExecutionListener.java index 6992cf0628..5bdc11fe14 100644 --- a/spring-test/src/main/java/org/springframework/test/context/web/ServletTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/web/ServletTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,6 +64,12 @@ import org.springframework.web.context.request.ServletWebRequest; */ public class ServletTestExecutionListener extends AbstractTestExecutionListener { + /** + * The {@link #getOrder() order} value for this listener: {@value}. + * @since 6.2.3 + */ + public static final int ORDER = 1000; + /** * Attribute name for a {@link TestContext} attribute which indicates * whether the {@code ServletTestExecutionListener} should {@linkplain @@ -110,11 +116,14 @@ public class ServletTestExecutionListener extends AbstractTestExecutionListener /** - * Returns {@code 1000}. + * Returns {@value #ORDER}, which ensures that the {@code ServletTestExecutionListener} + * is ordered before the + * {@link org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener + * DirtiesContextBeforeModesTestExecutionListener}. */ @Override public final int getOrder() { - return 1000; + return ORDER; } /**