From 49e5c849287a14ad5da0647ebed6908907a9a8ff Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Thu, 24 Apr 2025 16:13:10 +0200 Subject: [PATCH] Migrate remaining JUnit 4 tests to JUnit Jupiter where feasible In Spring Framework 5.2, we migrated most of the test suite from JUnit 4 to JUnit Jupiter; however, prior to this commit, several tests in the spring-test module were still based on JUnit 4 unnecessarily. Since we are now planning to deprecate our JUnit 4 support in 7.0, this commit migrates our remaining JUnit 4 based tests to JUnit Jupiter whenever feasible. In the process, test classes that previously resided under the "junit4" package have been moved to new packages directly under the "org.springframework.text.context" package, and several classes have been renamed for greater clarity of purpose. Consequently, the only remaining tests based on JUnit 4 are those tests that are required to run with JUnit 4 in order to test our JUnit 4 support. This commit also greatly simplifies exclusions for Checkstyle rules pertaining to JUnit usage. See gh-23451 See gh-34794 Closes gh-34813 --- .../spr6128 => }/AutowiredQualifierTests.java | 22 ++- .../ContextHierarchyDirtiesContextTests.java | 44 +++--- .../SpringTestContextFrameworkTestSuite.java | 8 +- .../annotation/AnnotationConfigTestSuite.java | 54 +++++++ ...ingDefaultConfigClassesInheritedTests.java | 28 ++-- ...ngExplicitConfigClassesInheritedTests.java | 10 +- .../DefaultConfigClassesBaseTests.java | 41 +++--- .../DefaultConfigClassesInheritedTests.java | 32 ++--- ...ingDefaultConfigClassesInheritedTests.java | 28 ++-- ...ngExplicitConfigClassesInheritedTests.java | 10 +- ...ltLoaderDefaultConfigClassesBaseTests.java | 41 +++--- ...derDefaultConfigClassesInheritedTests.java | 32 ++--- ...tLoaderExplicitConfigClassesBaseTests.java | 19 ++- ...erExplicitConfigClassesInheritedTests.java | 19 ++- .../ExplicitConfigClassesBaseTests.java | 19 ++- .../ExplicitConfigClassesInheritedTests.java | 19 ++- .../annotation/PojoAndStringConfig.java | 6 +- ...eResolverWithCustomDefaultsMetaConfig.java | 2 +- ...lverWithCustomDefaultsMetaConfigTests.java | 17 +-- ...mDefaultsMetaConfigWithOverridesTests.java | 17 +-- .../ConfigClassesAndProfilesMetaConfig.java | 2 +- ...nfigClassesAndProfilesMetaConfigTests.java | 41 +++--- ...dProfilesWithCustomDefaultsMetaConfig.java | 2 +- ...ilesWithCustomDefaultsMetaConfigTests.java | 19 +-- ...mDefaultsMetaConfigWithOverridesTests.java | 30 ++-- .../annotation/meta/MetaMetaConfig.java | 2 +- .../meta/MetaMetaConfigDefaultsTests.java | 19 +-- .../ClassLevelDirtiesContextTestNGTests.java | 15 +- .../cache/ClassLevelDirtiesContextTests.java | 75 +++++----- .../cache/MethodLevelDirtiesContextTests.java | 4 +- .../SpringExtensionContextCacheTests.java | 9 +- .../DirtiesContextInterfaceTests.java | 22 +-- .../hybrid/HybridContextLoader.java | 2 +- .../hybrid/HybridContextLoaderTests.java | 52 +++---- ...rridingDefaultLocationsInheritedTests.java | 13 +- ...ridingExplicitLocationsInheritedTests.java | 13 +- .../DefaultLocationsBaseTests.java | 21 ++- .../DefaultLocationsInheritedTests.java | 15 +- .../ExplicitLocationsBaseTests.java | 21 ++- .../ExplicitLocationsInheritedTests.java | 15 +- .../context/initializers/AciTestSuite.java | 62 ++++++++ .../DevProfileInitializer.java | 5 +- .../FooBarAliasInitializer.java | 5 +- .../annotation/BarConfig.java | 6 +- .../annotation/DevProfileConfig.java | 7 +- .../annotation/FooConfig.java | 6 +- .../annotation/GlobalConfig.java | 7 +- ...lizerConfiguredViaMetaAnnotationTests.java | 14 +- ...lizerWithoutConfigFilesOrClassesTests.java | 15 +- ...rgedInitializersAnnotationConfigTests.java | 13 +- ...ipleInitializersAnnotationConfigTests.java | 17 +-- ...eredInitializersAnnotationConfigTests.java | 23 ++- ...ddenInitializersAnnotationConfigTests.java | 13 +- .../PropertySourcesInitializerTests.java | 13 +- ...ingleInitializerAnnotationConfigTests.java | 15 +- .../MultipleInitializersXmlConfigTests.java | 17 +-- .../jdbc/GeneratedDatabaseNamesTests.java | 135 ++++++++++++++++++ .../Jsr250LifecycleTests.java | 58 ++++---- .../spr4868 => jsr250}/LifecycleBean.java | 2 +- ...figSpringJUnit4ClassRunnerAppCtxTests.java | 10 +- .../context/junit4/SpringJUnit4TestSuite.java | 44 +----- .../test/context/junit4/aci/AciTestSuite.java | 52 ------- .../annotation/AnnotationConfigTestSuite.java | 48 ------- .../SpringJUnit4ConcurrencyTests.java | 3 +- .../ProfileAnnotationConfigTestSuite.java | 38 ----- .../ClassNameActiveProfilesResolverTests.java | 58 -------- .../xml/ProfileXmlConfigTestSuite.java | 38 ----- ...sicAnnotationConfigWacSpringRuleTests.java | 65 +++++++-- ...dRuleWithRepeatJUnit4IntegrationTests.java | 3 +- .../junit4/spr3896/Spr3896TestSuite.java | 49 ------- .../context/junit4/spr8849/Spr8849Tests.java | 50 ------- .../context/junit4/spr8849/TestClass1.java | 60 -------- .../context/junit4/spr8849/TestClass2.java | 60 -------- .../context/junit4/spr8849/TestClass3.java | 59 -------- .../context/junit4/spr8849/TestClass4.java | 59 -------- .../web/JUnit4SpringContextWebTests.java | 5 +- ...ransactionalAnnotatedConfigClassTests.java | 39 +++-- ...figClassesWithoutAtConfigurationTests.java | 23 ++- .../AtBeanLiteModeScopeTests.java | 29 ++-- .../spr9051 => litemode}/LifecycleBean.java | 2 +- ...edConfigClassWithAtConfigurationTests.java | 26 ++-- ...figClassesWithoutAtConfigurationTests.java | 28 ++-- .../HibernateSessionFlushingTests.java | 66 +++++---- .../hibernate}/domain/DriversLicense.java | 2 +- .../orm => orm/hibernate}/domain/Person.java | 2 +- .../HibernatePersonRepository.java | 17 ++- .../repository/PersonRepository.java | 4 +- .../hibernate}/service/PersonService.java | 4 +- .../service}/StandardPersonService.java | 13 +- .../jpa}/JpaEntityListenerTests.java | 12 +- .../jpa}/domain/JpaPersonRepository.java | 2 +- .../orm => orm/jpa}/domain/Person.java | 2 +- .../jpa}/domain/PersonListener.java | 2 +- .../jpa}/domain/PersonRepository.java | 2 +- .../DefaultProfileAnnotationConfigTests.java | 23 ++- .../annotation/DefaultProfileConfig.java | 4 +- .../DevProfileAnnotationConfigTests.java | 10 +- .../profile/annotation/DevProfileConfig.java | 2 +- ...vProfileResolverAnnotationConfigTests.java | 4 +- .../DefaultProfileAnnotationConfigTests.java | 23 ++- .../importresource/DefaultProfileConfig.java | 6 +- .../DevProfileAnnotationConfigTests.java | 10 +- ...vProfileResolverAnnotationConfigTests.java | 2 +- .../ClassNameActiveProfilesResolver.java | 9 +- .../ClassNameActiveProfilesResolverTests.java | 42 ++++++ .../xml/DefaultProfileXmlConfigTests.java | 23 ++- .../xml/DevProfileResolverXmlConfigTests.java | 4 +- .../profile/xml/DevProfileXmlConfigTests.java | 10 +- .../context/web/AbstractBasicWacTests.java | 10 +- .../web/BasicAnnotationConfigWacTests.java | 48 ++++--- .../test/context/web/BasicGroovyWacTests.java | 11 +- .../test/context/web/BasicXmlWacTests.java | 13 +- .../EnableWebMvcAnnotationConfigTests.java} | 41 +++--- .../EnableWebMvcXmlConfigTests.java} | 27 ++-- .../context/web/ServletContextAwareBean.java | 8 +- .../web/ServletContextAwareBeanWacTests.java | 21 ++- .../context/web/WebTestConfiguration.java | 5 +- .../AutowiredQualifierTests-context.xml | 0 .../HybridContextLoaderTests-context.xml | 0 ...DefaultLocationsInheritedTests-context.xml | 0 .../DefaultLocationsBaseTests-context.xml | 0 ...DefaultLocationsInheritedTests-context.xml | 0 ...ipleInitializersXmlConfigTests-context.xml | 0 ...rce-config-with-auto-generated-db-name.xml | 2 +- .../spr8849 => jdbc}/datasource-config.xml | 2 +- .../enigma-schema.sql} | 0 .../spr9799/Spr9799XmlConfigTests-context.xml | 10 -- .../HibernateSessionFlushingTests-context.xml | 10 +- .../orm => orm/hibernate}/db-schema.sql | 0 .../orm => orm/hibernate}/db-test-data.sql | 0 .../hibernate}/domain/DriversLicense.hbm.xml | 2 +- .../hibernate}/domain/Person.hbm.xml | 4 +- .../profile/importresource/import.xml | 0 .../DefaultProfileXmlConfigTests-context.xml | 0 .../EnableWebMvcXmlConfigTests-context.xml | 13 ++ src/checkstyle/checkstyle-suppressions.xml | 7 +- 136 files changed, 1211 insertions(+), 1464 deletions(-) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr6128 => }/AutowiredQualifierTests.java (64%) create mode 100644 spring-test/src/test/java/org/springframework/test/context/annotation/AnnotationConfigTestSuite.java rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java (82%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java (82%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultConfigClassesBaseTests.java (73%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultConfigClassesInheritedTests.java (81%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java (74%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java (80%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java (67%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java (65%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/ExplicitConfigClassesBaseTests.java (67%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/ExplicitConfigClassesInheritedTests.java (66%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/PojoAndStringConfig.java (91%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java (97%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java (73%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfilesMetaConfig.java (96%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java (74%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java (96%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java (72%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java (68%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/MetaMetaConfig.java (95%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/annotation/meta/MetaMetaConfigDefaultsTests.java (73%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/hybrid/HybridContextLoader.java (98%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/hybrid/HybridContextLoaderTests.java (76%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/BeanOverridingDefaultLocationsInheritedTests.java (78%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/BeanOverridingExplicitLocationsInheritedTests.java (78%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/DefaultLocationsBaseTests.java (72%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/DefaultLocationsInheritedTests.java (78%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/ExplicitLocationsBaseTests.java (70%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr3896 => inheritance}/ExplicitLocationsInheritedTests.java (79%) create mode 100644 spring-test/src/test/java/org/springframework/test/context/initializers/AciTestSuite.java rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/DevProfileInitializer.java (90%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/FooBarAliasInitializer.java (89%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/BarConfig.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/DevProfileConfig.java (84%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/FooConfig.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/GlobalConfig.java (84%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/InitializerConfiguredViaMetaAnnotationTests.java (86%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/InitializerWithoutConfigFilesOrClassesTests.java (75%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/MergedInitializersAnnotationConfigTests.java (76%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/MultipleInitializersAnnotationConfigTests.java (69%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/OrderedInitializersAnnotationConfigTests.java (77%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/OverriddenInitializersAnnotationConfigTests.java (75%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/PropertySourcesInitializerTests.java (82%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/annotation/SingleInitializerAnnotationConfigTests.java (72%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/aci => initializers}/xml/MultipleInitializersXmlConfigTests.java (68%) create mode 100644 spring-test/src/test/java/org/springframework/test/context/jdbc/GeneratedDatabaseNamesTests.java rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr4868 => jsr250}/Jsr250LifecycleTests.java (80%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr4868 => jsr250}/LifecycleBean.java (94%) rename spring-test/src/test/java/org/springframework/test/context/junit4/{annotation => }/AnnotationConfigSpringJUnit4ClassRunnerAppCtxTests.java (79%) delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/aci/AciTestSuite.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/annotation/AnnotationConfigTestSuite.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/ProfileAnnotationConfigTestSuite.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolverTests.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/ProfileXmlConfigTestSuite.java rename spring-test/src/test/java/org/springframework/test/context/{bean/override/mockito/integration => junit4/rules}/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java (92%) delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/Spr3896TestSuite.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/Spr8849Tests.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/TestClass1.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/TestClass2.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/TestClass3.java delete mode 100644 spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/TestClass4.java rename spring-test/src/test/java/org/springframework/test/context/{ => junit4}/web/JUnit4SpringContextWebTests.java (95%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/AbstractTransactionalAnnotatedConfigClassTests.java (81%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/AnnotatedConfigClassesWithoutAtConfigurationTests.java (78%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/AtBeanLiteModeScopeTests.java (76%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/LifecycleBean.java (95%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java (78%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9051 => litemode}/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java (88%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm => orm/hibernate}/HibernateSessionFlushingTests.java (71%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm => orm/hibernate}/domain/DriversLicense.java (94%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm => orm/hibernate}/domain/Person.java (96%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm/repository/hibernate => orm/hibernate/repository}/HibernatePersonRepository.java (65%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm => orm/hibernate}/repository/PersonRepository.java (85%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm => orm/hibernate}/service/PersonService.java (85%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/orm/service/impl => orm/hibernate/service}/StandardPersonService.java (72%) rename spring-test/src/test/java/org/springframework/test/context/{junit/jupiter/orm => orm/jpa}/JpaEntityListenerTests.java (92%) rename spring-test/src/test/java/org/springframework/test/context/{junit/jupiter/orm => orm/jpa}/domain/JpaPersonRepository.java (95%) rename spring-test/src/test/java/org/springframework/test/context/{junit/jupiter/orm => orm/jpa}/domain/Person.java (95%) rename spring-test/src/test/java/org/springframework/test/context/{junit/jupiter/orm => orm/jpa}/domain/PersonListener.java (96%) rename spring-test/src/test/java/org/springframework/test/context/{junit/jupiter/orm => orm/jpa}/domain/PersonRepository.java (92%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/annotation/DefaultProfileAnnotationConfigTests.java (65%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/annotation/DefaultProfileConfig.java (90%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/annotation/DevProfileAnnotationConfigTests.java (77%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/annotation/DevProfileConfig.java (94%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/profile/importresource => profile/annotation}/DevProfileResolverAnnotationConfigTests.java (85%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/importresource/DefaultProfileAnnotationConfigTests.java (66%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/importresource/DefaultProfileConfig.java (83%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/importresource/DevProfileAnnotationConfigTests.java (77%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/profile/annotation => profile/importresource}/DevProfileResolverAnnotationConfigTests.java (94%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/resolver/ClassNameActiveProfilesResolver.java (73%) create mode 100644 spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolverTests.java rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/xml/DefaultProfileXmlConfigTests.java (68%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/xml/DevProfileResolverXmlConfigTests.java (84%) rename spring-test/src/test/java/org/springframework/test/context/{junit4 => }/profile/xml/DevProfileXmlConfigTests.java (79%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9799/Spr9799AnnotationConfigTests.java => web/EnableWebMvcAnnotationConfigTests.java} (57%) rename spring-test/src/test/java/org/springframework/test/context/{junit4/spr9799/Spr9799XmlConfigTests.java => web/EnableWebMvcXmlConfigTests.java} (50%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr6128 => }/AutowiredQualifierTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4 => }/hybrid/HybridContextLoaderTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr3896 => inheritance}/BeanOverridingDefaultLocationsInheritedTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr3896 => inheritance}/DefaultLocationsBaseTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr3896 => inheritance}/DefaultLocationsInheritedTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/aci => initializers}/xml/MultipleInitializersXmlConfigTests-context.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr8849 => jdbc}/datasource-config-with-auto-generated-db-name.xml (93%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr8849 => jdbc}/datasource-config.xml (93%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/spr8849/spr8849-schema.sql => jdbc/enigma-schema.sql} (100%) delete mode 100644 spring-test/src/test/resources/org/springframework/test/context/junit4/spr9799/Spr9799XmlConfigTests-context.xml rename spring-test/src/test/resources/org/springframework/test/context/{junit4/orm => orm/hibernate}/HibernateSessionFlushingTests-context.xml (82%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/orm => orm/hibernate}/db-schema.sql (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/orm => orm/hibernate}/db-test-data.sql (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/orm => orm/hibernate}/domain/DriversLicense.hbm.xml (78%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4/orm => orm/hibernate}/domain/Person.hbm.xml (77%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4 => }/profile/importresource/import.xml (100%) rename spring-test/src/test/resources/org/springframework/test/context/{junit4 => }/profile/xml/DefaultProfileXmlConfigTests-context.xml (100%) create mode 100644 spring-test/src/test/resources/org/springframework/test/context/web/EnableWebMvcXmlConfigTests-context.xml diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr6128/AutowiredQualifierTests.java b/spring-test/src/test/java/org/springframework/test/context/AutowiredQualifierTests.java similarity index 64% rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr6128/AutowiredQualifierTests.java rename to spring-test/src/test/java/org/springframework/test/context/AutowiredQualifierTests.java index 8436a50c95..5101960d4e 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr6128/AutowiredQualifierTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/AutowiredQualifierTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,30 +14,26 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.spr6128; +package org.springframework.test.context; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import static org.assertj.core.api.Assertions.assertThat; /** - * Integration tests to verify claims made in SPR-6128. + * Integration tests to verify claims made in + * gh-10796. * * @author Sam Brannen * @author Chris Beams * @since 3.0 */ -@ContextConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -public class AutowiredQualifierTests { +@SpringJUnitConfig +class AutowiredQualifierTests { @Autowired private String foo; @@ -48,7 +44,7 @@ public class AutowiredQualifierTests { @Test - public void test() { + void test() { assertThat(foo).isEqualTo("normal"); assertThat(customFoo).isEqualTo("custom"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/ContextHierarchyDirtiesContextTests.java b/spring-test/src/test/java/org/springframework/test/context/ContextHierarchyDirtiesContextTests.java index 41388fc7da..57d6ad93f3 100644 --- a/spring-test/src/test/java/org/springframework/test/context/ContextHierarchyDirtiesContextTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/ContextHierarchyDirtiesContextTests.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. @@ -20,9 +20,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; -import org.junit.runner.JUnitCore; -import org.junit.runner.Result; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.platform.testkit.engine.EngineTestKit; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -32,9 +31,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.HierarchyMode; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass; /** * Integration tests that verify proper behavior of {@link DirtiesContext @DirtiesContext} @@ -87,9 +87,11 @@ class ContextHierarchyDirtiesContextTests { private void runTestAndVerifyHierarchies(Class extends FooTestCase> testClass, boolean isFooContextActive, boolean isBarContextActive, boolean isBazContextActive) { - JUnitCore jUnitCore = new JUnitCore(); - Result result = jUnitCore.run(testClass); - assertThat(result.wasSuccessful()).as("all tests passed").isTrue(); + EngineTestKit.engine("junit-jupiter") + .selectors(selectClass(testClass)) + .execute() + .testEvents() + .assertStatistics(stats -> stats.started(1).succeeded(1).failed(0)); assertThat(ContextHierarchyDirtiesContextTests.context).isNotNull(); @@ -111,7 +113,7 @@ class ContextHierarchyDirtiesContextTests { // ------------------------------------------------------------------------- - @RunWith(SpringRunner.class) + @ExtendWith(SpringExtension.class) @ContextHierarchy(@ContextConfiguration(name = "foo")) abstract static class FooTestCase implements ApplicationContextAware { @@ -170,10 +172,10 @@ class ContextHierarchyDirtiesContextTests { * context. */ @DirtiesContext - public static class ClassLevelDirtiesContextWithExhaustiveModeTestCase extends BazTestCase { + static class ClassLevelDirtiesContextWithExhaustiveModeTestCase extends BazTestCase { - @org.junit.Test - public void test() { + @Test + void test() { } } @@ -184,10 +186,10 @@ class ContextHierarchyDirtiesContextTests { * beginning from the current context hierarchy and down through all subhierarchies. */ @DirtiesContext(hierarchyMode = HierarchyMode.CURRENT_LEVEL) - public static class ClassLevelDirtiesContextWithCurrentLevelModeTestCase extends BazTestCase { + static class ClassLevelDirtiesContextWithCurrentLevelModeTestCase extends BazTestCase { - @org.junit.Test - public void test() { + @Test + void test() { } } @@ -199,11 +201,11 @@ class ContextHierarchyDirtiesContextTests { * parent context, and then back down through all subhierarchies of the parent * context. */ - public static class MethodLevelDirtiesContextWithExhaustiveModeTestCase extends BazTestCase { + static class MethodLevelDirtiesContextWithExhaustiveModeTestCase extends BazTestCase { - @org.junit.Test + @Test @DirtiesContext - public void test() { + void test() { } } @@ -213,11 +215,11 @@ class ContextHierarchyDirtiesContextTests { *
After running this test class, the context cache should be cleared * beginning from the current context hierarchy and down through all subhierarchies. */ - public static class MethodLevelDirtiesContextWithCurrentLevelModeTestCase extends BazTestCase { + static class MethodLevelDirtiesContextWithCurrentLevelModeTestCase extends BazTestCase { - @org.junit.Test + @Test @DirtiesContext(hierarchyMode = HierarchyMode.CURRENT_LEVEL) - public void test() { + void test() { } } diff --git a/spring-test/src/test/java/org/springframework/test/context/SpringTestContextFrameworkTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/SpringTestContextFrameworkTestSuite.java index 4500d55668..cb4b809abf 100644 --- a/spring-test/src/test/java/org/springframework/test/context/SpringTestContextFrameworkTestSuite.java +++ b/spring-test/src/test/java/org/springframework/test/context/SpringTestContextFrameworkTestSuite.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 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. @@ -16,6 +16,8 @@ package org.springframework.test.context; +import org.junit.jupiter.api.ClassOrderer; +import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.ExcludeTags; import org.junit.platform.suite.api.IncludeClassNamePatterns; import org.junit.platform.suite.api.SelectPackages; @@ -44,5 +46,9 @@ import org.junit.platform.suite.api.Suite; @SelectPackages("org.springframework.test.context") @IncludeClassNamePatterns(".*Tests?$") @ExcludeTags("failing-test-case") +@ConfigurationParameter( + key = ClassOrderer.DEFAULT_ORDER_PROPERTY_NAME, + value = "org.junit.jupiter.api.ClassOrderer$ClassName" + ) class SpringTestContextFrameworkTestSuite { } diff --git a/spring-test/src/test/java/org/springframework/test/context/annotation/AnnotationConfigTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/annotation/AnnotationConfigTestSuite.java new file mode 100644 index 0000000000..8331b926dd --- /dev/null +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/AnnotationConfigTestSuite.java @@ -0,0 +1,54 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.test.context.annotation; + +import org.junit.jupiter.api.ClassOrderer; +import org.junit.platform.suite.api.ConfigurationParameter; +import org.junit.platform.suite.api.IncludeClassNamePatterns; +import org.junit.platform.suite.api.IncludeEngines; +import org.junit.platform.suite.api.SelectPackages; +import org.junit.platform.suite.api.Suite; + +/** + * JUnit Platform based test suite annotation-driven configuration class + * support in the Spring TestContext Framework. + * + *
This suite is only intended to be used manually within an IDE. + * + *
In order for our log4j2 configuration to be used in an IDE, you must + * set the following system property before running any tests — for + * example, in Run Configurations in Eclipse. + * + *
+ * -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager + *+ * + * @author Sam Brannen + * @since 3.1 + */ +@Suite +@IncludeEngines("junit-jupiter") +@SelectPackages("org.springframework.test.context.annotation") +@IncludeClassNamePatterns(".*Tests$") +@ConfigurationParameter( + key = ClassOrderer.DEFAULT_ORDER_PROPERTY_NAME, + value = "org.junit.jupiter.api.ClassOrderer$ClassName" +) +public class AnnotationConfigTestSuite { +} diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java similarity index 82% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java index 9e0b2378dd..f518595c59 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingDefaultConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.context.annotation.Bean; @@ -36,13 +36,21 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration -public class BeanOverridingDefaultConfigClassesInheritedTests extends DefaultConfigClassesBaseTests { +class BeanOverridingDefaultConfigClassesInheritedTests extends DefaultConfigClassesBaseTests { - @Configuration + @Test + @Override + void verifyEmployeeSetFromBaseContextConfig() { + assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); + assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); + } + + + @Configuration(proxyBeanMethods = false) static class ContextConfiguration { @Bean - public Employee employee() { + Employee employee() { Employee employee = new Employee(); employee.setName("Yoda"); employee.setAge(900); @@ -51,12 +59,4 @@ public class BeanOverridingDefaultConfigClassesInheritedTests extends DefaultCon } } - - @Test - @Override - public void verifyEmployeeSetFromBaseContextConfig() { - assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); - assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); - } - } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java similarity index 82% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java index 31fb3d0ecf..85224b4a42 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/BeanOverridingExplicitConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.test.context.ContextConfiguration; @@ -33,11 +33,11 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration(classes = BeanOverridingDefaultConfigClassesInheritedTests.ContextConfiguration.class) -public class BeanOverridingExplicitConfigClassesInheritedTests extends ExplicitConfigClassesBaseTests { +class BeanOverridingExplicitConfigClassesInheritedTests extends ExplicitConfigClassesBaseTests { @Test @Override - public void verifyEmployeeSetFromBaseContextConfig() { + void verifyEmployeeSetFromBaseContextConfig() { assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesBaseTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesBaseTests.java similarity index 73% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesBaseTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesBaseTests.java index 557e37eaee..73393f584e 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesBaseTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesBaseTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,17 +14,15 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.AnnotationConfigContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -39,15 +37,25 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 * @see DefaultLoaderDefaultConfigClassesBaseTests */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader = AnnotationConfigContextLoader.class) -public class DefaultConfigClassesBaseTests { +@SpringJUnitConfig(loader = AnnotationConfigContextLoader.class) +class DefaultConfigClassesBaseTests { - @Configuration + @Autowired + Employee employee; + + + @Test + void verifyEmployeeSetFromBaseContextConfig() { + assertThat(this.employee).as("The employee field should have been autowired.").isNotNull(); + assertThat(this.employee.getName()).isEqualTo("John Smith"); + } + + + @Configuration(proxyBeanMethods = false) static class ContextConfiguration { @Bean - public Employee employee() { + Employee employee() { Employee employee = new Employee(); employee.setName("John Smith"); employee.setAge(42); @@ -56,15 +64,4 @@ public class DefaultConfigClassesBaseTests { } } - - @Autowired - protected Employee employee; - - - @Test - public void verifyEmployeeSetFromBaseContextConfig() { - assertThat(this.employee).as("The employee field should have been autowired.").isNotNull(); - assertThat(this.employee.getName()).isEqualTo("John Smith"); - } - } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesInheritedTests.java similarity index 81% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesInheritedTests.java index 9604c8f520..2df5ca99a1 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Pet; @@ -37,26 +37,26 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration -public class DefaultConfigClassesInheritedTests extends DefaultConfigClassesBaseTests { - - @Configuration - static class ContextConfiguration { - - @Bean - public Pet pet() { - return new Pet("Fido"); - } - } - +class DefaultConfigClassesInheritedTests extends DefaultConfigClassesBaseTests { @Autowired - private Pet pet; + Pet pet; @Test - public void verifyPetSetFromExtendedContextConfig() { + void verifyPetSetFromExtendedContextConfig() { assertThat(this.pet).as("The pet should have been autowired.").isNotNull(); assertThat(this.pet.getName()).isEqualTo("Fido"); } + + @Configuration(proxyBeanMethods = false) + static class ContextConfiguration { + + @Bean + Pet pet() { + return new Pet("Fido"); + } + } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java similarity index 83% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java index e530a99ee4..a19fa97448 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.context.annotation.Bean; @@ -35,14 +35,22 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration -public class DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests extends +class DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests extends DefaultLoaderDefaultConfigClassesBaseTests { - @Configuration + @Test + @Override + void verifyEmployeeSetFromBaseContextConfig() { + assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); + assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); + } + + + @Configuration(proxyBeanMethods = false) static class Config { @Bean - public Employee employee() { + Employee employee() { Employee employee = new Employee(); employee.setName("Yoda"); employee.setAge(900); @@ -51,12 +59,4 @@ public class DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests exten } } - - @Test - @Override - public void verifyEmployeeSetFromBaseContextConfig() { - assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); - assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); - } - } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java similarity index 83% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java index 4be240ce7e..ac98527530 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.support.DelegatingSmartContextLoader; @@ -32,12 +32,12 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration(classes = DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.Config.class) -public class DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests extends +class DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests extends DefaultLoaderExplicitConfigClassesBaseTests { @Test @Override - public void verifyEmployeeSetFromBaseContextConfig() { + void verifyEmployeeSetFromBaseContextConfig() { assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); assertThat(this.employee.getName()).as("The employee bean should have been overridden.").isEqualTo("Yoda"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java similarity index 74% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java index b032b6e4bc..4b822712eb 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesBaseTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,17 +14,15 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.DelegatingSmartContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -38,15 +36,25 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 * @see DefaultConfigClassesBaseTests */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration -public class DefaultLoaderDefaultConfigClassesBaseTests { +@SpringJUnitConfig +class DefaultLoaderDefaultConfigClassesBaseTests { - @Configuration + @Autowired + Employee employee; + + + @Test + void verifyEmployeeSetFromBaseContextConfig() { + assertThat(this.employee).as("The employee field should have been autowired.").isNotNull(); + assertThat(this.employee.getName()).isEqualTo("John Smith"); + } + + + @Configuration(proxyBeanMethods = false) static class Config { @Bean - public Employee employee() { + Employee employee() { Employee employee = new Employee(); employee.setName("John Smith"); employee.setAge(42); @@ -55,15 +63,4 @@ public class DefaultLoaderDefaultConfigClassesBaseTests { } } - - @Autowired - protected Employee employee; - - - @Test - public void verifyEmployeeSetFromBaseContextConfig() { - assertThat(this.employee).as("The employee field should have been autowired.").isNotNull(); - assertThat(this.employee.getName()).isEqualTo("John Smith"); - } - } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java similarity index 80% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java index 780791bdc4..36ede3e9c4 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderDefaultConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Pet; @@ -36,26 +36,26 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 3.1 */ @ContextConfiguration -public class DefaultLoaderDefaultConfigClassesInheritedTests extends DefaultLoaderDefaultConfigClassesBaseTests { - - @Configuration - static class Config { - - @Bean - public Pet pet() { - return new Pet("Fido"); - } - } - +class DefaultLoaderDefaultConfigClassesInheritedTests extends DefaultLoaderDefaultConfigClassesBaseTests { @Autowired - private Pet pet; + Pet pet; @Test - public void verifyPetSetFromExtendedContextConfig() { + void verifyPetSetFromExtendedContextConfig() { assertThat(this.pet).as("The pet should have been autowired.").isNotNull(); assertThat(this.pet.getName()).isEqualTo("Fido"); } + + @Configuration(proxyBeanMethods = false) + static class Config { + + @Bean + Pet pet() { + return new Pet("Fido"); + } + } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java similarity index 67% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java index aa0d8ab54a..4a88ec8709 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesBaseTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,15 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Employee; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.DelegatingSmartContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -35,16 +33,15 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 3.1 */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = DefaultLoaderDefaultConfigClassesBaseTests.Config.class) -public class DefaultLoaderExplicitConfigClassesBaseTests { +@SpringJUnitConfig(DefaultLoaderDefaultConfigClassesBaseTests.Config.class) +class DefaultLoaderExplicitConfigClassesBaseTests { @Autowired - protected Employee employee; + Employee employee; @Test - public void verifyEmployeeSetFromBaseContextConfig() { + void verifyEmployeeSetFromBaseContextConfig() { assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); assertThat(this.employee.getName()).isEqualTo("John Smith"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java similarity index 65% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java index 3166a6e0b3..dbdcb4b67a 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/DefaultLoaderExplicitConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,15 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Pet; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.DelegatingSmartContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -35,16 +33,15 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 3.1 */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = DefaultLoaderDefaultConfigClassesInheritedTests.Config.class) -public class DefaultLoaderExplicitConfigClassesInheritedTests extends DefaultLoaderExplicitConfigClassesBaseTests { +@SpringJUnitConfig(DefaultLoaderDefaultConfigClassesInheritedTests.Config.class) +class DefaultLoaderExplicitConfigClassesInheritedTests extends DefaultLoaderExplicitConfigClassesBaseTests { @Autowired - private Pet pet; + Pet pet; @Test - public void verifyPetSetFromExtendedContextConfig() { + void verifyPetSetFromExtendedContextConfig() { assertThat(this.pet).as("The pet should have been autowired.").isNotNull(); assertThat(this.pet.getName()).isEqualTo("Fido"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesBaseTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesBaseTests.java similarity index 67% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesBaseTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesBaseTests.java index 8660f67e95..6f7b834133 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesBaseTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesBaseTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,15 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Employee; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.AnnotationConfigContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -36,16 +34,15 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 3.1 */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = DefaultConfigClassesBaseTests.ContextConfiguration.class) -public class ExplicitConfigClassesBaseTests { +@SpringJUnitConfig(loader = AnnotationConfigContextLoader.class, classes = DefaultConfigClassesBaseTests.ContextConfiguration.class) +class ExplicitConfigClassesBaseTests { @Autowired - protected Employee employee; + Employee employee; @Test - public void verifyEmployeeSetFromBaseContextConfig() { + void verifyEmployeeSetFromBaseContextConfig() { assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); assertThat(this.employee.getName()).isEqualTo("John Smith"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesInheritedTests.java similarity index 66% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesInheritedTests.java index 3e48c6f6c3..fe8725bf72 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/ExplicitConfigClassesInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/ExplicitConfigClassesInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,15 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Pet; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.support.AnnotationConfigContextLoader; import static org.assertj.core.api.Assertions.assertThat; @@ -37,16 +35,15 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 3.1 */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = DefaultConfigClassesInheritedTests.ContextConfiguration.class) -public class ExplicitConfigClassesInheritedTests extends ExplicitConfigClassesBaseTests { +@SpringJUnitConfig(loader = AnnotationConfigContextLoader.class, classes = DefaultConfigClassesInheritedTests.ContextConfiguration.class) +class ExplicitConfigClassesInheritedTests extends ExplicitConfigClassesBaseTests { @Autowired - private Pet pet; + Pet pet; @Test - public void verifyPetSetFromExtendedContextConfig() { + void verifyPetSetFromExtendedContextConfig() { assertThat(this.pet).as("The pet should have been autowired.").isNotNull(); assertThat(this.pet.getName()).isEqualTo("Fido"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/PojoAndStringConfig.java b/spring-test/src/test/java/org/springframework/test/context/annotation/PojoAndStringConfig.java similarity index 91% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/PojoAndStringConfig.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/PojoAndStringConfig.java index 8de202408e..daa0500317 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/PojoAndStringConfig.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/PojoAndStringConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation; +package org.springframework.test.context.annotation; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.beans.testfixture.beans.Pet; @@ -32,7 +32,7 @@ import org.springframework.context.annotation.Configuration; * @author Sam Brannen * @since 3.1 */ -@Configuration +@Configuration(proxyBeanMethods = false) public class PojoAndStringConfig { @Bean diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java similarity index 97% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java index 3da5148989..cf26e459eb 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java similarity index 73% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java index d48627f60f..8e81356769 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -31,16 +31,17 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0.3 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig -public class ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests { +class ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigTests { @Autowired private String foo; @Test - public void foo() { + void foo() { assertThat(foo).isEqualTo("Resolver Foo"); } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java similarity index 83% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java index 70be208501..c80efa75af 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,17 +14,17 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.test.context.ActiveProfilesResolver; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -35,18 +35,19 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0.3 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfig(classes = LocalDevConfig.class, resolver = DevResolver.class) -public class ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests { +class ConfigClassesAndProfileResolverWithCustomDefaultsMetaConfigWithOverridesTests { @Autowired private String foo; @Test - public void foo() { + void foo() { assertThat(foo).isEqualTo("Local Dev Foo"); } + } @Configuration diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfig.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfig.java similarity index 96% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfig.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfig.java index e8fc3927cc..4d7ca9959b 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfig.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfig.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java similarity index 74% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java index 469870028e..9d4f3df829 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesMetaConfigTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -35,37 +35,38 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0.3 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ConfigClassesAndProfilesMetaConfig(profiles = "dev") -public class ConfigClassesAndProfilesMetaConfigTests { +class ConfigClassesAndProfilesMetaConfigTests { - @Configuration + @Autowired + String foo; + + + @Test + void foo() { + assertThat(foo).isEqualTo("Local Dev Foo"); + } + + + @Configuration(proxyBeanMethods = false) @Profile("dev") static class DevConfig { @Bean - public String foo() { + String foo() { return "Local Dev Foo"; } } - @Configuration + @Configuration(proxyBeanMethods = false) @Profile("prod") static class ProductionConfig { @Bean - public String foo() { + String foo() { return "Local Production Foo"; } } - - @Autowired - private String foo; - - - @Test - public void foo() { - assertThat(foo).isEqualTo("Local Dev Foo"); - } } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java similarity index 96% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java index 44684649b2..615ad407e4 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java similarity index 72% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java index f6a8bf102b..274c0de05a 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -31,16 +31,17 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ConfigClassesAndProfilesWithCustomDefaultsMetaConfig -public class ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests { +class ConfigClassesAndProfilesWithCustomDefaultsMetaConfigTests { @Autowired - private String foo; + String foo; @Test - public void foo() { + void foo() { assertThat(foo).isEqualTo("Dev Foo"); } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java similarity index 68% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java index 3da7e5ed85..96810f9bf0 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests.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. @@ -14,17 +14,17 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.testfixture.beans.Employee; import org.springframework.beans.testfixture.beans.Pet; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.junit4.annotation.PojoAndStringConfig; -import org.springframework.test.context.junit4.annotation.meta.ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.ProductionConfig; +import org.springframework.test.context.annotation.PojoAndStringConfig; +import org.springframework.test.context.annotation.meta.ConfigClassesAndProfilesWithCustomDefaultsMetaConfig.ProductionConfig; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -35,35 +35,35 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ConfigClassesAndProfilesWithCustomDefaultsMetaConfig( classes = { PojoAndStringConfig.class, ProductionConfig.class }, profiles = "prod") -public class ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests { +class ConfigClassesAndProfilesWithCustomDefaultsMetaConfigWithOverridesTests { @Autowired - private String foo; + String foo; @Autowired - private Pet pet; + Pet pet; @Autowired - protected Employee employee; + Employee employee; @Test - public void verifyEmployee() { + void verifyEmployee() { assertThat(this.employee).as("The employee should have been autowired.").isNotNull(); assertThat(this.employee.getName()).isEqualTo("John Smith"); } @Test - public void verifyPet() { + void verifyPet() { assertThat(this.pet).as("The pet should have been autowired.").isNotNull(); assertThat(this.pet.getName()).isEqualTo("Fido"); } @Test - public void verifyFoo() { + void verifyFoo() { assertThat(this.foo).isEqualTo("Production Foo"); } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfig.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfig.java similarity index 95% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfig.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfig.java index be59c1119f..d762cb262d 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfig.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfig.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfigDefaultsTests.java b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfigDefaultsTests.java similarity index 73% rename from spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfigDefaultsTests.java rename to spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfigDefaultsTests.java index 65fe0c5da3..a273b89ac4 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/meta/MetaMetaConfigDefaultsTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/annotation/meta/MetaMetaConfigDefaultsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.annotation.meta; +package org.springframework.test.context.annotation.meta; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -32,16 +32,17 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Sam Brannen * @since 4.0.3 */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @MetaMetaConfig -public class MetaMetaConfigDefaultsTests { +class MetaMetaConfigDefaultsTests { @Autowired - private String foo; + String foo; @Test - public void foo() { + void foo() { assertThat(foo).isEqualTo("Production Foo"); } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTestNGTests.java b/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTestNGTests.java index f0663a50e2..033eb1b027 100644 --- a/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTestNGTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTestNGTests.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. @@ -31,6 +31,7 @@ import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; +import org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.springframework.test.context.testng.TrackingTestNGTestListener; @@ -162,12 +163,18 @@ class ClassLevelDirtiesContextTestNGTests { // ------------------------------------------------------------------- - @TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class, - DirtiesContextTestExecutionListener.class }, inheritListeners = false) @ContextConfiguration + // Ensure that we do not include the EventPublishingTestExecutionListener + // since it will access the ApplicationContext for each method in the + // TestExecutionListener API, thus distorting our cache hit/miss results. + @TestExecutionListeners({ + DirtiesContextBeforeModesTestExecutionListener.class, + DependencyInjectionTestExecutionListener.class, + DirtiesContextTestExecutionListener.class + }) abstract static class BaseTestCase extends AbstractTestNGSpringContextTests { - @Configuration + @Configuration(proxyBeanMethods = false) static class Config { /* no beans */ } diff --git a/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTests.java b/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTests.java index a5527be66e..1ed24d6a84 100644 --- a/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/cache/ClassLevelDirtiesContextTests.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. @@ -21,7 +21,8 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.platform.testkit.engine.EngineTestKit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -31,15 +32,14 @@ import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass; import static org.springframework.test.context.cache.ContextCacheTestUtils.assertContextCacheStatistics; import static org.springframework.test.context.cache.ContextCacheTestUtils.resetContextCache; -import static org.springframework.test.context.junit4.JUnitTestingUtils.runTestsAndAssertCounters; /** * JUnit based integration test which verifies correct {@linkplain ContextCache @@ -131,15 +131,24 @@ class ClassLevelDirtiesContextTests { 0, cacheHits.incrementAndGet(), cacheMisses.get()); } - private void runTestClassAndAssertStats(Class> testClass, int expectedTestCount) throws Exception { - runTestsAndAssertCounters(testClass, expectedTestCount, 0, expectedTestCount, 0, 0); - } - private void assertBehaviorForCleanTestCase() throws Exception { runTestClassAndAssertStats(CleanTestCase.class, 1); assertContextCacheStatistics("after clean test class", 1, cacheHits.get(), cacheMisses.incrementAndGet()); } + private void runTestClassAndAssertStats(Class> testClass, int expectedTestCount) throws Exception { + EngineTestKit.engine("junit-jupiter") + .selectors(selectClass(testClass)) + .execute() + .testEvents() + .assertStatistics(stats -> stats + .started(expectedTestCount) + .finished(expectedTestCount) + .succeeded(expectedTestCount) + .failed(0) + .aborted(0)); + } + @AfterAll static void verifyFinalCacheState() { assertContextCacheStatistics("AfterClass", 0, cacheHits.get(), cacheMisses.get()); @@ -148,7 +157,7 @@ class ClassLevelDirtiesContextTests { // ------------------------------------------------------------------- - @RunWith(SpringRunner.class) + @ExtendWith(SpringExtension.class) @ContextConfiguration // Ensure that we do not include the EventPublishingTestExecutionListener // since it will access the ApplicationContext for each method in the @@ -160,7 +169,7 @@ class ClassLevelDirtiesContextTests { }) abstract static class BaseTestCase { - @Configuration + @Configuration(proxyBeanMethods = false) static class Config { /* no beans */ } @@ -175,75 +184,75 @@ class ClassLevelDirtiesContextTests { } } - public static final class CleanTestCase extends BaseTestCase { + static final class CleanTestCase extends BaseTestCase { - @org.junit.Test - public void verifyContextWasAutowired() { + @Test + void verifyContextWasAutowired() { assertApplicationContextWasAutowired(); } } @DirtiesContext - public static class ClassLevelDirtiesContextWithCleanMethodsAndDefaultModeTestCase extends BaseTestCase { + static class ClassLevelDirtiesContextWithCleanMethodsAndDefaultModeTestCase extends BaseTestCase { - @org.junit.Test - public void verifyContextWasAutowired() { + @Test + void verifyContextWasAutowired() { assertApplicationContextWasAutowired(); } } - public static class InheritedClassLevelDirtiesContextWithCleanMethodsAndDefaultModeTestCase extends + static class InheritedClassLevelDirtiesContextWithCleanMethodsAndDefaultModeTestCase extends ClassLevelDirtiesContextWithCleanMethodsAndDefaultModeTestCase { } @DirtiesContext(classMode = ClassMode.AFTER_CLASS) - public static class ClassLevelDirtiesContextWithCleanMethodsAndAfterClassModeTestCase extends BaseTestCase { + static class ClassLevelDirtiesContextWithCleanMethodsAndAfterClassModeTestCase extends BaseTestCase { - @org.junit.Test - public void verifyContextWasAutowired() { + @Test + void verifyContextWasAutowired() { assertApplicationContextWasAutowired(); } } - public static class InheritedClassLevelDirtiesContextWithCleanMethodsAndAfterClassModeTestCase extends + static class InheritedClassLevelDirtiesContextWithCleanMethodsAndAfterClassModeTestCase extends ClassLevelDirtiesContextWithCleanMethodsAndAfterClassModeTestCase { } @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) - public static class ClassLevelDirtiesContextWithAfterEachTestMethodModeTestCase extends BaseTestCase { + static class ClassLevelDirtiesContextWithAfterEachTestMethodModeTestCase extends BaseTestCase { - @org.junit.Test - public void verifyContextWasAutowired1() { + @Test + void verifyContextWasAutowired1() { assertApplicationContextWasAutowired(); } - @org.junit.Test - public void verifyContextWasAutowired2() { + @Test + void verifyContextWasAutowired2() { assertApplicationContextWasAutowired(); } - @org.junit.Test - public void verifyContextWasAutowired3() { + @Test + void verifyContextWasAutowired3() { assertApplicationContextWasAutowired(); } } - public static class InheritedClassLevelDirtiesContextWithAfterEachTestMethodModeTestCase extends + static class InheritedClassLevelDirtiesContextWithAfterEachTestMethodModeTestCase extends ClassLevelDirtiesContextWithAfterEachTestMethodModeTestCase { } @DirtiesContext - public static class ClassLevelDirtiesContextWithDirtyMethodsTestCase extends BaseTestCase { + static class ClassLevelDirtiesContextWithDirtyMethodsTestCase extends BaseTestCase { - @org.junit.Test + @Test @DirtiesContext - public void dirtyContext() { + void dirtyContext() { assertApplicationContextWasAutowired(); } } - public static class InheritedClassLevelDirtiesContextWithDirtyMethodsTestCase extends + static class InheritedClassLevelDirtiesContextWithDirtyMethodsTestCase extends ClassLevelDirtiesContextWithDirtyMethodsTestCase { } diff --git a/spring-test/src/test/java/org/springframework/test/context/cache/MethodLevelDirtiesContextTests.java b/spring-test/src/test/java/org/springframework/test/context/cache/MethodLevelDirtiesContextTests.java index 72dbddc0ea..323d7eb6d3 100644 --- a/spring-test/src/test/java/org/springframework/test/context/cache/MethodLevelDirtiesContextTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/cache/MethodLevelDirtiesContextTests.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,7 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.annotation.DirtiesContext.MethodMode.BEFORE_METHOD; /** - * Integration test which verifies correct interaction between the + * Integration tests which verify correct interaction between the * {@link DirtiesContextBeforeModesTestExecutionListener}, * {@link DependencyInjectionTestExecutionListener}, and * {@link DirtiesContextTestExecutionListener} when diff --git a/spring-test/src/test/java/org/springframework/test/context/cache/SpringExtensionContextCacheTests.java b/spring-test/src/test/java/org/springframework/test/context/cache/SpringExtensionContextCacheTests.java index 1e67f03145..f32aea8948 100644 --- a/spring-test/src/test/java/org/springframework/test/context/cache/SpringExtensionContextCacheTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/cache/SpringExtensionContextCacheTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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,10 +37,9 @@ import static org.springframework.test.context.cache.ContextCacheTestUtils.asser import static org.springframework.test.context.cache.ContextCacheTestUtils.resetContextCache; /** - * Unit tests which verify correct {@link ContextCache - * application context caching} in conjunction with the - * {@link SpringExtension} and the {@link DirtiesContext - * @DirtiesContext} annotation at the method level. + * JUnit based integration test which verifies correct {@linkplain ContextCache + * application context caching} in conjunction with the {@link SpringExtension} and + * {@link DirtiesContext @DirtiesContext} at the method level. * * @author Sam Brannen * @author Juergen Hoeller diff --git a/spring-test/src/test/java/org/springframework/test/context/configuration/interfaces/DirtiesContextInterfaceTests.java b/spring-test/src/test/java/org/springframework/test/context/configuration/interfaces/DirtiesContextInterfaceTests.java index 92d1331bd6..4a2cbfa492 100644 --- a/spring-test/src/test/java/org/springframework/test/context/configuration/interfaces/DirtiesContextInterfaceTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/configuration/interfaces/DirtiesContextInterfaceTests.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. @@ -21,21 +21,22 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.platform.testkit.engine.EngineTestKit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass; import static org.springframework.test.context.cache.ContextCacheTestUtils.assertContextCacheStatistics; import static org.springframework.test.context.cache.ContextCacheTestUtils.resetContextCache; -import static org.springframework.test.context.junit4.JUnitTestingUtils.runTestsAndAssertCounters; /** * @author Sam Brannen @@ -70,11 +71,14 @@ class DirtiesContextInterfaceTests { } private void runTestClassAndAssertStats(Class> testClass, int expectedTestCount) throws Exception { - runTestsAndAssertCounters(testClass, expectedTestCount, 0, expectedTestCount, 0, 0); + EngineTestKit.engine("junit-jupiter") + .selectors(selectClass(testClass)) + .execute() + .testEvents() + .assertStatistics(stats -> stats.started(expectedTestCount).succeeded(expectedTestCount).failed(0)); } - - @RunWith(SpringRunner.class) + @ExtendWith(SpringExtension.class) // Ensure that we do not include the EventPublishingTestExecutionListener // since it will access the ApplicationContext for each method in the // TestExecutionListener API, thus distorting our cache hit/miss results. @@ -90,13 +94,13 @@ class DirtiesContextInterfaceTests { ApplicationContext applicationContext; - @org.junit.Test + @Test public void verifyContextWasAutowired() { assertThat(this.applicationContext).as("The application context should have been autowired.").isNotNull(); } - @Configuration + @Configuration(proxyBeanMethods = false) static class Config { /* no beans */ } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoader.java b/spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoader.java similarity index 98% rename from spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoader.java rename to spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoader.java index 9f8c06534c..9b2375fcdf 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoader.java +++ b/spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoader.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.hybrid; +package org.springframework.test.context.hybrid; import org.springframework.beans.factory.support.BeanDefinitionReader; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoaderTests.java b/spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoaderTests.java similarity index 76% rename from spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoaderTests.java rename to spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoaderTests.java index 1ef7a18c09..07b630c910 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/hybrid/HybridContextLoaderTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/hybrid/HybridContextLoaderTests.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. @@ -14,17 +14,17 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.hybrid; +package org.springframework.test.context.hybrid; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.SmartContextLoader; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -37,37 +37,22 @@ import static org.assertj.core.api.Assertions.assertThat; * @since 4.0.4 * @see HybridContextLoader */ -@RunWith(SpringJUnit4ClassRunner.class) +@ExtendWith(SpringExtension.class) @ContextConfiguration(loader = HybridContextLoader.class) -public class HybridContextLoaderTests { - - @Configuration - static class Config { - - @Bean - public String fooFromJava() { - return "Java"; - } - - @Bean - public String enigma() { - return "enigma from Java"; - } - } - +class HybridContextLoaderTests { @Autowired - private String fooFromXml; + String fooFromXml; @Autowired - private String fooFromJava; + String fooFromJava; @Autowired - private String enigma; + String enigma; @Test - public void verifyContentsOfHybridApplicationContext() { + void verifyContentsOfHybridApplicationContext() { assertThat(fooFromXml).isEqualTo("XML"); assertThat(fooFromJava).isEqualTo("Java"); @@ -78,4 +63,19 @@ public class HybridContextLoaderTests { assertThat(enigma).isEqualTo("enigma from XML"); } + + @Configuration(proxyBeanMethods = false) + static class Config { + + @Bean + String fooFromJava() { + return "Java"; + } + + @Bean + String enigma() { + return "enigma from Java"; + } + } + } diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/BeanOverridingDefaultLocationsInheritedTests.java b/spring-test/src/test/java/org/springframework/test/context/inheritance/BeanOverridingDefaultLocationsInheritedTests.java similarity index 78% rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/BeanOverridingDefaultLocationsInheritedTests.java rename to spring-test/src/test/java/org/springframework/test/context/inheritance/BeanOverridingDefaultLocationsInheritedTests.java index f33a0c4fcb..0b72dea199 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/BeanOverridingDefaultLocationsInheritedTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/inheritance/BeanOverridingDefaultLocationsInheritedTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.spr3896; +package org.springframework.test.context.inheritance; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.test.context.ContextConfiguration; import static org.assertj.core.api.Assertions.assertThat; /** - * JUnit 4 based integration test for verifying support for the + * JUnit based integration test for verifying support for the * {@link ContextConfiguration#inheritLocations() inheritLocations} flag of * {@link ContextConfiguration @ContextConfiguration} indirectly proposed in This suite is only intended to be used manually within an IDE. + * + *
In order for our log4j2 configuration to be used in an IDE, you must + * set the following system property before running any tests — for + * example, in Run Configurations in Eclipse. + * + *
+ * -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager + *+ * + * @author Sam Brannen + * @since 3.2 + */ +@Suite +@IncludeEngines("junit-jupiter") +@SelectPackages({ + "org.springframework.test.context.initializers.annotation", + "org.springframework.test.context.initializers.xml" +}) +@IncludeClassNamePatterns(".*Tests$") +@ExcludeTags("failing-test-case") +@ConfigurationParameter( + key = ClassOrderer.DEFAULT_ORDER_PROPERTY_NAME, + value = "org.junit.jupiter.api.ClassOrderer$ClassName" +) +public class AciTestSuite { +} diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/aci/DevProfileInitializer.java b/spring-test/src/test/java/org/springframework/test/context/initializers/DevProfileInitializer.java similarity index 90% rename from spring-test/src/test/java/org/springframework/test/context/junit4/aci/DevProfileInitializer.java rename to spring-test/src/test/java/org/springframework/test/context/initializers/DevProfileInitializer.java index 16a4ce4ec5..04f866aee3 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit4/aci/DevProfileInitializer.java +++ b/spring-test/src/test/java/org/springframework/test/context/initializers/DevProfileInitializer.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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.test.context.junit4.aci; +package org.springframework.test.context.initializers; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.support.GenericApplicationContext; @@ -29,4 +29,5 @@ public class DevProfileInitializer implements ApplicationContextInitializer
By using a SpEL expression to generate a random {@code database-name} + * for the embedded database (see {@code datasource-config.xml}), we ensure + * that each {@code ApplicationContext} that imports the common configuration + * will create an embedded database with a unique name. + * + *
To reproduce the problem mentioned in gh-13491, delete the declaration + * of the {@code database-name} attribute of the embedded database in + * {@code datasource-config.xml} and run this suite. + * + *
As of Spring 4.2, a proper solution is possible thanks to gh-13491.
+ * {@link TestClass2A} and {@link TestClass2B} both import
+ * {@code datasource-config-with-auto-generated-db-name.xml} which makes
+ * use of the new {@code generate-name} attribute of {@code Furthermore, by extending {@link SpringJUnit4ClassRunnerAppCtxTests},
+ * Furthermore, by extending {@code SpringJUnit4ClassRunnerAppCtxTests},
* this class also verifies support for several basic features of the
* Spring TestContext Framework. See JavaDoc in
- * {@code SpringJUnit4ClassRunnerAppCtxTests} for details.
+ * {@link SpringJUnit4ClassRunnerAppCtxTests} for details.
*
* Configuration will be loaded from {@link PojoAndStringConfig}.
*
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/SpringJUnit4TestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/SpringJUnit4TestSuite.java
index 5302d1c0fb..e3bb2feef8 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/SpringJUnit4TestSuite.java
+++ b/spring-test/src/test/java/org/springframework/test/context/junit4/SpringJUnit4TestSuite.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.
@@ -20,27 +20,6 @@ import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
-import org.springframework.test.context.junit4.annotation.AnnotationConfigSpringJUnit4ClassRunnerAppCtxTests;
-import org.springframework.test.context.junit4.annotation.BeanOverridingDefaultConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.BeanOverridingExplicitConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.DefaultConfigClassesBaseTests;
-import org.springframework.test.context.junit4.annotation.DefaultConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderDefaultConfigClassesBaseTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderDefaultConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderExplicitConfigClassesBaseTests;
-import org.springframework.test.context.junit4.annotation.DefaultLoaderExplicitConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.annotation.ExplicitConfigClassesBaseTests;
-import org.springframework.test.context.junit4.annotation.ExplicitConfigClassesInheritedTests;
-import org.springframework.test.context.junit4.orm.HibernateSessionFlushingTests;
-import org.springframework.test.context.junit4.profile.annotation.DefaultProfileAnnotationConfigTests;
-import org.springframework.test.context.junit4.profile.annotation.DevProfileAnnotationConfigTests;
-import org.springframework.test.context.junit4.profile.annotation.DevProfileResolverAnnotationConfigTests;
-import org.springframework.test.context.junit4.profile.xml.DefaultProfileXmlConfigTests;
-import org.springframework.test.context.junit4.profile.xml.DevProfileResolverXmlConfigTests;
-import org.springframework.test.context.junit4.profile.xml.DevProfileXmlConfigTests;
-
/**
* JUnit test suite for tests involving {@link SpringRunner} and the
* Spring TestContext Framework; only intended to be run manually as a
@@ -64,24 +43,6 @@ StandardJUnit4FeaturesTests.class,//
StandardJUnit4FeaturesSpringRunnerTests.class,//
SpringJUnit47ClassRunnerRuleTests.class,//
AnnotationConfigSpringJUnit4ClassRunnerAppCtxTests.class,//
- DefaultConfigClassesBaseTests.class,//
- DefaultConfigClassesInheritedTests.class,//
- BeanOverridingDefaultConfigClassesInheritedTests.class,//
- ExplicitConfigClassesBaseTests.class,//
- ExplicitConfigClassesInheritedTests.class,//
- BeanOverridingExplicitConfigClassesInheritedTests.class,//
- DefaultLoaderDefaultConfigClassesBaseTests.class,//
- DefaultLoaderDefaultConfigClassesInheritedTests.class,//
- DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.class,//
- DefaultLoaderExplicitConfigClassesBaseTests.class,//
- DefaultLoaderExplicitConfigClassesInheritedTests.class,//
- DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.class,//
- DefaultProfileAnnotationConfigTests.class,//
- DevProfileAnnotationConfigTests.class,//
- DevProfileResolverAnnotationConfigTests.class,//
- DefaultProfileXmlConfigTests.class,//
- DevProfileXmlConfigTests.class,//
- DevProfileResolverXmlConfigTests.class,//
ExpectedExceptionSpringRunnerTests.class,//
TimedSpringRunnerTests.class,//
RepeatedSpringRunnerTests.class,//
@@ -102,8 +63,7 @@ StandardJUnit4FeaturesTests.class,//
RollbackOverrideDefaultRollbackTrueTransactionalTests.class,//
RollbackOverrideDefaultRollbackFalseTransactionalTests.class,//
BeforeAndAfterTransactionAnnotationTests.class,//
- TimedTransactionalSpringRunnerTests.class,//
- HibernateSessionFlushingTests.class //
+ TimedTransactionalSpringRunnerTests.class//
})
public class SpringJUnit4TestSuite {
/* this test case consists entirely of tests loaded as a suite. */
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/aci/AciTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/aci/AciTestSuite.java
deleted file mode 100644
index 30d70eefd4..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/aci/AciTestSuite.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002-2012 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.aci;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-import org.springframework.context.ApplicationContextInitializer;
-import org.springframework.test.context.junit4.aci.annotation.InitializerWithoutConfigFilesOrClassesTests;
-import org.springframework.test.context.junit4.aci.annotation.MergedInitializersAnnotationConfigTests;
-import org.springframework.test.context.junit4.aci.annotation.MultipleInitializersAnnotationConfigTests;
-import org.springframework.test.context.junit4.aci.annotation.OrderedInitializersAnnotationConfigTests;
-import org.springframework.test.context.junit4.aci.annotation.OverriddenInitializersAnnotationConfigTests;
-import org.springframework.test.context.junit4.aci.annotation.SingleInitializerAnnotationConfigTests;
-import org.springframework.test.context.junit4.aci.xml.MultipleInitializersXmlConfigTests;
-
-/**
- * Convenience test suite for integration tests that verify support for
- * {@link ApplicationContextInitializer ApplicationContextInitializers} (ACIs)
- * in the TestContext framework.
- *
- * @author Sam Brannen
- * @since 3.2
- */
-@RunWith(Suite.class)
-// Note: the following 'multi-line' layout is for enhanced code readability.
-@SuiteClasses({//
- MultipleInitializersXmlConfigTests.class,//
- SingleInitializerAnnotationConfigTests.class,//
- MultipleInitializersAnnotationConfigTests.class,//
- MergedInitializersAnnotationConfigTests.class,//
- OverriddenInitializersAnnotationConfigTests.class,//
- OrderedInitializersAnnotationConfigTests.class,//
- InitializerWithoutConfigFilesOrClassesTests.class //
-})
-public class AciTestSuite {
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/AnnotationConfigTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/AnnotationConfigTestSuite.java
deleted file mode 100644
index f5f16ea993..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/annotation/AnnotationConfigTestSuite.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2002-2011 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.annotation;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * JUnit test suite for annotation-driven configuration class
- * support in the Spring TestContext Framework.
- *
- * @author Sam Brannen
- * @since 3.1
- */
-@RunWith(Suite.class)
-// Note: the following 'multi-line' layout is for enhanced code readability.
-@SuiteClasses({//
-AnnotationConfigSpringJUnit4ClassRunnerAppCtxTests.class,//
- DefaultConfigClassesBaseTests.class,//
- DefaultConfigClassesInheritedTests.class,//
- BeanOverridingDefaultConfigClassesInheritedTests.class,//
- ExplicitConfigClassesBaseTests.class,//
- ExplicitConfigClassesInheritedTests.class,//
- BeanOverridingExplicitConfigClassesInheritedTests.class,//
- DefaultLoaderDefaultConfigClassesBaseTests.class,//
- DefaultLoaderDefaultConfigClassesInheritedTests.class,//
- DefaultLoaderBeanOverridingDefaultConfigClassesInheritedTests.class,//
- DefaultLoaderExplicitConfigClassesBaseTests.class,//
- DefaultLoaderExplicitConfigClassesInheritedTests.class,//
- DefaultLoaderBeanOverridingExplicitConfigClassesInheritedTests.class //
-})
-public class AnnotationConfigTestSuite {
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/concurrency/SpringJUnit4ConcurrencyTests.java b/spring-test/src/test/java/org/springframework/test/context/junit4/concurrency/SpringJUnit4ConcurrencyTests.java
index ee61b3ebef..a3e77dc2df 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/concurrency/SpringJUnit4ConcurrencyTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/junit4/concurrency/SpringJUnit4ConcurrencyTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -79,7 +79,6 @@ public class SpringJUnit4ConcurrencyTests {
TimedTransactionalSpringRunnerTests.class,
// Web and Scopes
BasicAnnotationConfigWacSpringRuleTests.class,
- // Spring MVC Test
};
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/ProfileAnnotationConfigTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/ProfileAnnotationConfigTestSuite.java
deleted file mode 100644
index 26d29dfa26..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/ProfileAnnotationConfigTestSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002-2013 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.profile.annotation;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * JUnit test suite for bean definition profile support in the
- * Spring TestContext Framework with annotation-based configuration.
- *
- * @author Sam Brannen
- * @since 3.1
- */
-@RunWith(Suite.class)
-// Note: the following 'multi-line' layout is for enhanced code readability.
-@SuiteClasses({//
-DefaultProfileAnnotationConfigTests.class,//
- DevProfileAnnotationConfigTests.class,//
- DevProfileResolverAnnotationConfigTests.class //
-})
-public class ProfileAnnotationConfigTestSuite {
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolverTests.java b/spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolverTests.java
deleted file mode 100644
index 6c71af3fbd..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolverTests.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002-2019 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.profile.resolver;
-
-import java.util.Arrays;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author Michail Nikolaev
- * @since 4.0
- */
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
-@ActiveProfiles(resolver = ClassNameActiveProfilesResolver.class)
-public class ClassNameActiveProfilesResolverTests {
-
- @Configuration
- static class Config {
-
- }
-
-
- @Autowired
- private ApplicationContext applicationContext;
-
-
- @Test
- public void test() {
- assertThat(Arrays.asList(applicationContext.getEnvironment().getActiveProfiles()).contains(
- getClass().getSimpleName().toLowerCase())).isTrue();
- }
-
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/ProfileXmlConfigTestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/ProfileXmlConfigTestSuite.java
deleted file mode 100644
index 741327d7e1..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/ProfileXmlConfigTestSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002-2013 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.profile.xml;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * JUnit test suite for bean definition profile support in the
- * Spring TestContext Framework with XML-based configuration.
- *
- * @author Sam Brannen
- * @since 3.1
- */
-@RunWith(Suite.class)
-// Note: the following 'multi-line' layout is for enhanced code readability.
-@SuiteClasses({//
-DefaultProfileXmlConfigTests.class,//
- DevProfileXmlConfigTests.class,//
- DevProfileResolverXmlConfigTests.class //
-})
-public class ProfileXmlConfigTestSuite {
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/rules/BasicAnnotationConfigWacSpringRuleTests.java b/spring-test/src/test/java/org/springframework/test/context/junit4/rules/BasicAnnotationConfigWacSpringRuleTests.java
index 8c2f26f8fd..326e5f5621 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/rules/BasicAnnotationConfigWacSpringRuleTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/junit4/rules/BasicAnnotationConfigWacSpringRuleTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2015 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.
@@ -18,23 +18,30 @@ package org.springframework.test.context.junit4.rules;
import org.junit.ClassRule;
import org.junit.Rule;
+import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.springframework.test.context.web.BasicAnnotationConfigWacTests;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.web.AbstractBasicWacTests;
+import org.springframework.test.context.web.ServletContextAwareBean;
+
+import static org.assertj.core.api.Assertions.assertThat;
/**
- * This class is an extension of {@link BasicAnnotationConfigWacTests}
- * that has been modified to use {@link SpringClassRule} and
- * {@link SpringMethodRule}.
+ * This class is a copy of {@link org.springframework.test.context.web.BasicAnnotationConfigWacTests}
+ * that has been modified to use the {@link JUnit4} runner combined with
+ * {@link SpringClassRule} and {@link SpringMethodRule}.
*
* @author Sam Brannen
* @since 4.2
*/
@RunWith(JUnit4.class)
-public class BasicAnnotationConfigWacSpringRuleTests extends BasicAnnotationConfigWacTests {
-
- // All tests are in superclass.
+@ContextConfiguration
+public class BasicAnnotationConfigWacSpringRuleTests extends AbstractBasicWacTests {
@ClassRule
public static final SpringClassRule springClassRule = new SpringClassRule();
@@ -42,4 +49,46 @@ public class BasicAnnotationConfigWacSpringRuleTests extends BasicAnnotationConf
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
+
+ @Autowired
+ ServletContextAwareBean servletContextAwareBean;
+
+
+ /**
+ * Have to override this method to annotate it with JUnit 4's {@code @Test}
+ * annotation.
+ */
+ @Test
+ @Override
+ public void basicWacFeatures() throws Exception {
+ super.basicWacFeatures();
+ }
+
+ @Test
+ public void fooEnigmaAutowired() {
+ assertThat(foo).isEqualTo("enigma");
+ }
+
+ @Test
+ public void servletContextAwareBeanProcessed() {
+ assertThat(servletContextAwareBean).isNotNull();
+ assertThat(servletContextAwareBean.getServletContext()).isNotNull();
+ }
+
+
+ @Configuration(proxyBeanMethods = false)
+ static class Config {
+
+ @Bean
+ String foo() {
+ return "enigma";
+ }
+
+ @Bean
+ ServletContextAwareBean servletContextAwareBean() {
+ return new ServletContextAwareBean();
+ }
+
+ }
+
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java b/spring-test/src/test/java/org/springframework/test/context/junit4/rules/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
similarity index 92%
rename from spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
rename to spring-test/src/test/java/org/springframework/test/context/junit4/rules/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
index 588e7ac010..15211ba521 100644
--- a/spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/junit4/rules/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.bean.override.mockito.integration;
+package org.springframework.test.context.junit4.rules;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -23,7 +23,6 @@ import org.junit.Test;
import org.springframework.test.annotation.Repeat;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
-import org.springframework.test.context.junit4.rules.SpringMethodRule;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/Spr3896TestSuite.java b/spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/Spr3896TestSuite.java
deleted file mode 100644
index 994251e8d7..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr3896/Spr3896TestSuite.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2002-2019 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.spr3896;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * JUnit 4 based test suite for functionality proposed in SPR-3896.
- *
- * @author Sam Brannen
- * @since 2.5
- */
-@RunWith(Suite.class)
-// Note: the following 'multi-line' layout is for enhanced code readability.
-@SuiteClasses({
-
-DefaultLocationsBaseTests.class,
-
-DefaultLocationsInheritedTests.class,
-
-ExplicitLocationsBaseTests.class,
-
-ExplicitLocationsInheritedTests.class,
-
-BeanOverridingDefaultLocationsInheritedTests.class,
-
-BeanOverridingExplicitLocationsInheritedTests.class
-
-})
-public class Spr3896TestSuite {
-}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/Spr8849Tests.java b/spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/Spr8849Tests.java
deleted file mode 100644
index 707c726535..0000000000
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr8849/Spr8849Tests.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2002-2024 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.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.test.context.junit4.spr8849;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * Test suite to investigate claims raised in
- * SPR-8849.
- *
- * By using a SpEL expression to generate a random {@code database-name}
- * for the embedded database (see {@code datasource-config.xml}), we ensure
- * that each {@code ApplicationContext} that imports the common configuration
- * will create an embedded database with a unique name.
- *
- * To reproduce the problem mentioned in SPR-8849, delete the declaration
- * of the {@code database-name} attribute of the embedded database in
- * {@code datasource-config.xml} and run this suite.
- *
- * As of Spring 4.2, a proper solution is possible thanks to SPR-8849.
- * {@link TestClass3} and {@link TestClass4} both import
- * {@code datasource-config-with-auto-generated-db-name.xml} which makes
- * use of the new {@code generate-name} attribute of {@code The Claims:
*
@@ -48,9 +46,8 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Phillip Webb
* @since 3.2
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = AnnotatedConfigClassesWithoutAtConfigurationTests.AnnotatedFactoryBeans.class)
-public class AnnotatedConfigClassesWithoutAtConfigurationTests {
+@SpringJUnitConfig(AnnotatedConfigClassesWithoutAtConfigurationTests.AnnotatedFactoryBeans.class)
+class AnnotatedConfigClassesWithoutAtConfigurationTests {
/**
* This is intentionally not annotated with {@code @Configuration}.
@@ -63,12 +60,12 @@ public class AnnotatedConfigClassesWithoutAtConfigurationTests {
@Bean
- public String enigma() {
+ String enigma() {
return "enigma #" + enigmaCallCount.incrementAndGet();
}
@Bean
- public LifecycleBean lifecycleBean() {
+ LifecycleBean lifecycleBean() {
// The following call to enigma() literally invokes the local
// enigma() method, not a CGLIB proxied version, since these methods
// are essentially factory bean methods.
@@ -87,7 +84,7 @@ public class AnnotatedConfigClassesWithoutAtConfigurationTests {
@Test
- public void testSPR_9051() {
+ void testSPR_9051() {
assertThat(enigma).isNotNull();
assertThat(lifecycleBean).isNotNull();
assertThat(lifecycleBean.isInitialized()).isTrue();
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/AtBeanLiteModeScopeTests.java b/spring-test/src/test/java/org/springframework/test/context/litemode/AtBeanLiteModeScopeTests.java
similarity index 76%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/AtBeanLiteModeScopeTests.java
rename to spring-test/src/test/java/org/springframework/test/context/litemode/AtBeanLiteModeScopeTests.java
index 811ae9d070..98557992be 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/AtBeanLiteModeScopeTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/litemode/AtBeanLiteModeScopeTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,18 +14,16 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9051;
+package org.springframework.test.context.litemode;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import static org.assertj.core.api.Assertions.assertThat;
@@ -36,9 +34,8 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 3.2
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = AtBeanLiteModeScopeTests.LiteBeans.class)
-public class AtBeanLiteModeScopeTests {
+@SpringJUnitConfig(AtBeanLiteModeScopeTests.LiteBeans.class)
+class AtBeanLiteModeScopeTests {
/**
* This is intentionally not annotated with {@code @Configuration}.
@@ -46,7 +43,7 @@ public class AtBeanLiteModeScopeTests {
static class LiteBeans {
@Bean
- public LifecycleBean singleton() {
+ LifecycleBean singleton() {
LifecycleBean bean = new LifecycleBean("singleton");
assertThat(bean.isInitialized()).isFalse();
return bean;
@@ -54,7 +51,7 @@ public class AtBeanLiteModeScopeTests {
@Bean
@Scope("prototype")
- public LifecycleBean prototype() {
+ LifecycleBean prototype() {
LifecycleBean bean = new LifecycleBean("prototype");
assertThat(bean.isInitialized()).isFalse();
return bean;
@@ -63,19 +60,19 @@ public class AtBeanLiteModeScopeTests {
@Autowired
- private ApplicationContext applicationContext;
+ ApplicationContext applicationContext;
@Autowired
@Qualifier("singleton")
- private LifecycleBean injectedSingletonBean;
+ LifecycleBean injectedSingletonBean;
@Autowired
@Qualifier("prototype")
- private LifecycleBean injectedPrototypeBean;
+ LifecycleBean injectedPrototypeBean;
@Test
- public void singletonLiteBean() {
+ void singletonLiteBean() {
assertThat(injectedSingletonBean).isNotNull();
assertThat(injectedSingletonBean.isInitialized()).isTrue();
@@ -87,7 +84,7 @@ public class AtBeanLiteModeScopeTests {
}
@Test
- public void prototypeLiteBean() {
+ void prototypeLiteBean() {
assertThat(injectedPrototypeBean).isNotNull();
assertThat(injectedPrototypeBean.isInitialized()).isTrue();
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/LifecycleBean.java b/spring-test/src/test/java/org/springframework/test/context/litemode/LifecycleBean.java
similarity index 95%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/LifecycleBean.java
rename to spring-test/src/test/java/org/springframework/test/context/litemode/LifecycleBean.java
index 2a8c01156c..b5db347604 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/LifecycleBean.java
+++ b/spring-test/src/test/java/org/springframework/test/context/litemode/LifecycleBean.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9051;
+package org.springframework.test.context.litemode;
import jakarta.annotation.PostConstruct;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java b/spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java
similarity index 78%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java
rename to spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java
index 3a8df08203..3cac87b000 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassWithAtConfigurationTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassWithAtConfigurationTests.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.
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9051;
+package org.springframework.test.context.litemode;
import javax.sql.DataSource;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.context.annotation.Bean;
@@ -39,7 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @see TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests
*/
@ContextConfiguration
-public class TransactionalAnnotatedConfigClassWithAtConfigurationTests extends
+class TransactionalAnnotatedConfigClassWithAtConfigurationTests extends
AbstractTransactionalAnnotatedConfigClassTests {
/**
@@ -52,7 +52,7 @@ public class TransactionalAnnotatedConfigClassWithAtConfigurationTests extends
static class Config {
@Bean
- public Employee employee() {
+ Employee employee() {
Employee employee = new Employee();
employee.setName("John Smith");
employee.setAge(42);
@@ -61,24 +61,24 @@ public class TransactionalAnnotatedConfigClassWithAtConfigurationTests extends
}
@Bean
- public PlatformTransactionManager transactionManager() {
+ PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
- public DataSource dataSource() {
+ DataSource dataSource() {
return new EmbeddedDatabaseBuilder()//
- .addScript("classpath:/org/springframework/test/jdbc/schema.sql")//
- // Ensure that this in-memory database is only used by this class:
- .setName(getClass().getName())//
- .build();
+ .addScript("classpath:/org/springframework/test/jdbc/schema.sql")//
+ // Ensure that this in-memory database is only used by this class:
+ .setName(getClass().getName())//
+ .build();
}
}
- @Before
- public void compareDataSources() {
+ @BeforeEach
+ void compareDataSources() {
// NOTE: the two DataSource instances ARE the same!
assertThat(dataSourceViaInjection).isSameAs(dataSourceFromTxManager);
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java b/spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java
similarity index 88%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java
rename to spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java
index 7914ac6aff..d522bc9743 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9051/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/litemode/TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.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.
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9051;
+package org.springframework.test.context.litemode;
import javax.sql.DataSource;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.context.annotation.Bean;
@@ -45,7 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @see TransactionalAnnotatedConfigClassWithAtConfigurationTests
*/
@ContextConfiguration(classes = TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests.AnnotatedFactoryBeans.class)
-public class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests extends
+class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests extends
AbstractTransactionalAnnotatedConfigClassTests {
/**
@@ -58,7 +58,7 @@ public class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests exte
static class AnnotatedFactoryBeans {
@Bean
- public Employee employee() {
+ Employee employee() {
Employee employee = new Employee();
employee.setName("John Smith");
employee.setAge(42);
@@ -67,7 +67,7 @@ public class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests exte
}
@Bean
- public PlatformTransactionManager transactionManager() {
+ PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@@ -92,19 +92,19 @@ public class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests exte
* which is almost certainly not the desired or intended behavior.
*/
@Bean
- public DataSource dataSource() {
+ DataSource dataSource() {
return new EmbeddedDatabaseBuilder()//
- .addScript("classpath:/org/springframework/test/jdbc/schema.sql")//
- // Ensure that this in-memory database is only used by this class:
- .setName(getClass().getName())//
- .build();
+ .addScript("classpath:/org/springframework/test/jdbc/schema.sql")//
+ // Ensure that this in-memory database is only used by this class:
+ .setName(getClass().getName())//
+ .build();
}
}
- @Before
- public void compareDataSources() {
+ @BeforeEach
+ void compareDataSources() {
// NOTE: the two DataSource instances are NOT the same!
assertThat(dataSourceViaInjection).isNotSameAs(dataSourceFromTxManager);
}
@@ -119,7 +119,7 @@ public class TransactionalAnnotatedConfigClassesWithoutAtConfigurationTests exte
*/
@AfterTransaction
@Override
- public void afterTransaction() {
+ void afterTransaction() {
assertThat(deletePerson(YODA)).as("Deleting yoda").isEqualTo(1);
// NOTE: We would actually expect that there are now ZERO entries in the
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/HibernateSessionFlushingTests.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/HibernateSessionFlushingTests.java
similarity index 71%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/HibernateSessionFlushingTests.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/HibernateSessionFlushingTests.java
index 54f2177dc9..239f8f910f 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/HibernateSessionFlushingTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/HibernateSessionFlushingTests.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.
@@ -14,21 +14,24 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm;
+package org.springframework.test.context.orm.hibernate;
+
+import javax.sql.DataSource;
import jakarta.persistence.PersistenceException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.exception.ConstraintViolationException;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
-import org.springframework.test.context.junit4.orm.domain.DriversLicense;
-import org.springframework.test.context.junit4.orm.domain.Person;
-import org.springframework.test.context.junit4.orm.service.PersonService;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
+import org.springframework.test.context.orm.hibernate.domain.DriversLicense;
+import org.springframework.test.context.orm.hibernate.domain.Person;
+import org.springframework.test.context.orm.hibernate.service.PersonService;
+import org.springframework.test.jdbc.JdbcTestUtils;
import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,23 +46,32 @@ import static org.springframework.test.transaction.TransactionAssert.assertThatT
* @author Juergen Hoeller
* @author Vlad Mihalcea
* @since 3.0
- * @see org.springframework.test.context.junit.jupiter.orm.JpaEntityListenerTests
+ * @see org.springframework.test.context.orm.jpa.JpaEntityListenerTests
*/
-@ContextConfiguration
-public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4SpringContextTests {
+@SpringJUnitConfig
+@Transactional
+class HibernateSessionFlushingTests {
private static final String SAM = "Sam";
private static final String JUERGEN = "Juergen";
- @Autowired
- private PersonService personService;
+ JdbcTemplate jdbcTemplate;
@Autowired
- private SessionFactory sessionFactory;
+ SessionFactory sessionFactory;
+
+ @Autowired
+ PersonService personService;
- @Before
- public void setup() {
+ @Autowired
+ void setDataSource(DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+
+ @BeforeEach
+ void setup() {
assertThatTransaction().isActive();
assertThat(personService).as("PersonService should have been autowired.").isNotNull();
assertThat(sessionFactory).as("SessionFactory should have been autowired.").isNotNull();
@@ -67,7 +79,7 @@ public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4Sp
@Test
- public void findSam() {
+ void findSam() {
Person sam = personService.findByName(SAM);
assertThat(sam).as("Should be able to find Sam").isNotNull();
DriversLicense driversLicense = sam.getDriversLicense();
@@ -77,7 +89,7 @@ public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4Sp
@Test // SPR-16956
@Transactional(readOnly = true)
- public void findSamWithReadOnlySession() {
+ void findSamWithReadOnlySession() {
Person sam = personService.findByName(SAM);
sam.setName("Vlad");
// By setting setDefaultReadOnly(true), the user can no longer modify any entity...
@@ -88,7 +100,7 @@ public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4Sp
}
@Test
- public void saveJuergenWithDriversLicense() {
+ void saveJuergenWithDriversLicense() {
DriversLicense driversLicense = new DriversLicense(2L, 2222L);
Person juergen = new Person(JUERGEN, driversLicense);
int numRows = countRowsInTable("person");
@@ -99,21 +111,21 @@ public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4Sp
}
@Test
- public void saveJuergenWithNullDriversLicense() {
- assertThatExceptionOfType(ConstraintViolationException.class).isThrownBy(() ->
- personService.save(new Person(JUERGEN)));
+ void saveJuergenWithNullDriversLicense() {
+ assertThatExceptionOfType(ConstraintViolationException.class)
+ .isThrownBy(() -> personService.save(new Person(JUERGEN)));
}
@Test
// no expected exception!
- public void updateSamWithNullDriversLicenseWithoutSessionFlush() {
+ void updateSamWithNullDriversLicenseWithoutSessionFlush() {
updateSamWithNullDriversLicense();
// False positive, since an exception will be thrown once the session is
// finally flushed (i.e., in production code)
}
@Test
- public void updateSamWithNullDriversLicenseWithSessionFlush() {
+ void updateSamWithNullDriversLicenseWithSessionFlush() {
updateSamWithNullDriversLicense();
assertThatExceptionOfType(ConstraintViolationException.class).isThrownBy(() -> {
// Manual flush is required to avoid false positive in test
@@ -134,4 +146,8 @@ public class HibernateSessionFlushingTests extends AbstractTransactionalJUnit4Sp
personService.save(sam);
}
+ private int countRowsInTable(String tableName) {
+ return JdbcTestUtils.countRowsInTable(this.jdbcTemplate, tableName);
+ }
+
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/DriversLicense.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/DriversLicense.java
similarity index 94%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/DriversLicense.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/DriversLicense.java
index 8f3d9df059..905ab6c2fb 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/DriversLicense.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/DriversLicense.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.domain;
+package org.springframework.test.context.orm.hibernate.domain;
/**
* DriversLicense POJO.
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/Person.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/Person.java
similarity index 96%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/Person.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/Person.java
index e0348fd1bc..0168c6719a 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/domain/Person.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/domain/Person.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.domain;
+package org.springframework.test.context.orm.hibernate.domain;
/**
* Person POJO.
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/hibernate/HibernatePersonRepository.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/HibernatePersonRepository.java
similarity index 65%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/hibernate/HibernatePersonRepository.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/HibernatePersonRepository.java
index 317ec5a5fd..66f9cb03dd 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/hibernate/HibernatePersonRepository.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/HibernatePersonRepository.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 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.
@@ -14,14 +14,12 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.repository.hibernate;
+package org.springframework.test.context.orm.hibernate.repository;
import org.hibernate.SessionFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
-import org.springframework.test.context.junit4.orm.domain.Person;
-import org.springframework.test.context.junit4.orm.repository.PersonRepository;
+import org.springframework.test.context.orm.hibernate.domain.Person;
/**
* Hibernate implementation of the {@link PersonRepository} API.
@@ -30,12 +28,11 @@ import org.springframework.test.context.junit4.orm.repository.PersonRepository;
* @since 3.0
*/
@Repository
-public class HibernatePersonRepository implements PersonRepository {
+class HibernatePersonRepository implements PersonRepository {
private final SessionFactory sessionFactory;
- @Autowired
public HibernatePersonRepository(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@@ -48,8 +45,10 @@ public class HibernatePersonRepository implements PersonRepository {
@Override
public Person findByName(String name) {
- return (Person) this.sessionFactory.getCurrentSession().createQuery(
- "from Person person where person.name = :name").setParameter("name", name).getSingleResult();
+ return (Person) this.sessionFactory.getCurrentSession()
+ .createQuery("from Person person where person.name = :name")
+ .setParameter("name", name)
+ .getSingleResult();
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/PersonRepository.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/PersonRepository.java
similarity index 85%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/PersonRepository.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/PersonRepository.java
index b75f511f93..7dfc668081 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/repository/PersonRepository.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/repository/PersonRepository.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.repository;
+package org.springframework.test.context.orm.hibernate.repository;
-import org.springframework.test.context.junit4.orm.domain.Person;
+import org.springframework.test.context.orm.hibernate.domain.Person;
/**
* Person Repository API.
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/PersonService.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/PersonService.java
similarity index 85%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/PersonService.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/PersonService.java
index d42b03602e..3334fce555 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/PersonService.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/PersonService.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.service;
+package org.springframework.test.context.orm.hibernate.service;
-import org.springframework.test.context.junit4.orm.domain.Person;
+import org.springframework.test.context.orm.hibernate.domain.Person;
/**
* Person Service API.
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/impl/StandardPersonService.java b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/StandardPersonService.java
similarity index 72%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/impl/StandardPersonService.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/StandardPersonService.java
index 2e98308a19..da9df33b85 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/orm/service/impl/StandardPersonService.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/hibernate/service/StandardPersonService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 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.
@@ -14,13 +14,11 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.orm.service.impl;
+package org.springframework.test.context.orm.hibernate.service;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.test.context.junit4.orm.domain.Person;
-import org.springframework.test.context.junit4.orm.repository.PersonRepository;
-import org.springframework.test.context.junit4.orm.service.PersonService;
+import org.springframework.test.context.orm.hibernate.domain.Person;
+import org.springframework.test.context.orm.hibernate.repository.PersonRepository;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -31,12 +29,11 @@ import org.springframework.transaction.annotation.Transactional;
*/
@Service
@Transactional(readOnly = true)
-public class StandardPersonService implements PersonService {
+class StandardPersonService implements PersonService {
private final PersonRepository personRepository;
- @Autowired
public StandardPersonService(PersonRepository personRepository) {
this.personRepository = personRepository;
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/JpaEntityListenerTests.java b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/JpaEntityListenerTests.java
similarity index 92%
rename from spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/JpaEntityListenerTests.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/jpa/JpaEntityListenerTests.java
index 0056da8df6..2b6eb5adea 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/JpaEntityListenerTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/JpaEntityListenerTests.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit.jupiter.orm;
+package org.springframework.test.context.orm.jpa;
import java.util.List;
@@ -37,10 +37,10 @@ import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
-import org.springframework.test.context.junit.jupiter.orm.domain.JpaPersonRepository;
-import org.springframework.test.context.junit.jupiter.orm.domain.Person;
-import org.springframework.test.context.junit.jupiter.orm.domain.PersonListener;
-import org.springframework.test.context.junit.jupiter.orm.domain.PersonRepository;
+import org.springframework.test.context.orm.jpa.domain.JpaPersonRepository;
+import org.springframework.test.context.orm.jpa.domain.Person;
+import org.springframework.test.context.orm.jpa.domain.PersonListener;
+import org.springframework.test.context.orm.jpa.domain.PersonRepository;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
@@ -53,7 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 5.3.18
* @see issue gh-28228
- * @see org.springframework.test.context.junit4.orm.HibernateSessionFlushingTests
+ * @see org.springframework.test.context.orm.hibernate.HibernateSessionFlushingTests
*/
@SpringJUnitConfig
@Transactional
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/JpaPersonRepository.java b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/JpaPersonRepository.java
similarity index 95%
rename from spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/JpaPersonRepository.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/JpaPersonRepository.java
index eb5e38973e..fdbdfcdbd5 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/JpaPersonRepository.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/JpaPersonRepository.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit.jupiter.orm.domain;
+package org.springframework.test.context.orm.jpa.domain;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/Person.java b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/Person.java
similarity index 95%
rename from spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/Person.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/Person.java
index 1a67dc439b..e2b77c8161 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/Person.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/Person.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit.jupiter.orm.domain;
+package org.springframework.test.context.orm.jpa.domain;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonListener.java b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonListener.java
similarity index 96%
rename from spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonListener.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonListener.java
index 1ba3dce8b6..0e4752ce56 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonListener.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonListener.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit.jupiter.orm.domain;
+package org.springframework.test.context.orm.jpa.domain;
import java.util.ArrayList;
import java.util.List;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonRepository.java b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonRepository.java
similarity index 92%
rename from spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonRepository.java
rename to spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonRepository.java
index 9576a649d0..b981db1198 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/orm/domain/PersonRepository.java
+++ b/spring-test/src/test/java/org/springframework/test/context/orm/jpa/domain/PersonRepository.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit.jupiter.orm.domain;
+package org.springframework.test.context.orm.jpa.domain;
/**
* Person repository API.
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileAnnotationConfigTests.java
similarity index 65%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileAnnotationConfigTests.java
index 6e6fed937d..70b9f1532f 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileAnnotationConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,16 +14,14 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.annotation;
+package org.springframework.test.context.profile.annotation;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.beans.testfixture.beans.Pet;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import static org.assertj.core.api.Assertions.assertThat;
@@ -32,25 +30,24 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 3.1
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = { DefaultProfileConfig.class, DevProfileConfig.class }, loader = AnnotationConfigContextLoader.class)
-public class DefaultProfileAnnotationConfigTests {
+@SpringJUnitConfig(classes = { DefaultProfileConfig.class, DevProfileConfig.class }, loader = AnnotationConfigContextLoader.class)
+class DefaultProfileAnnotationConfigTests {
@Autowired
- protected Pet pet;
+ Pet pet;
@Autowired(required = false)
- protected Employee employee;
+ Employee employee;
@Test
- public void pet() {
+ void pet() {
assertThat(pet).isNotNull();
assertThat(pet.getName()).isEqualTo("Fido");
}
@Test
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should not be created for the default profile").isNull();
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileConfig.java b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileConfig.java
similarity index 90%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileConfig.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileConfig.java
index 67fefb7719..f5ade70123 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DefaultProfileConfig.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DefaultProfileConfig.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.annotation;
+package org.springframework.test.context.profile.annotation;
import org.springframework.beans.testfixture.beans.Pet;
import org.springframework.context.annotation.Bean;
@@ -24,7 +24,7 @@ import org.springframework.context.annotation.Configuration;
* @author Sam Brannen
* @since 3.1
*/
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class DefaultProfileConfig {
@Bean
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileAnnotationConfigTests.java
similarity index 77%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileAnnotationConfigTests.java
index 36aa83b114..7587d24a8b 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileAnnotationConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.annotation;
+package org.springframework.test.context.profile.annotation;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.test.context.ActiveProfiles;
@@ -27,11 +27,11 @@ import static org.assertj.core.api.Assertions.assertThat;
* @since 3.1
*/
@ActiveProfiles("dev")
-public class DevProfileAnnotationConfigTests extends DefaultProfileAnnotationConfigTests {
+class DevProfileAnnotationConfigTests extends DefaultProfileAnnotationConfigTests {
@Test
@Override
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should be loaded for the 'dev' profile").isNotNull();
assertThat(employee.getName()).isEqualTo("John Smith");
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileConfig.java b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileConfig.java
similarity index 94%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileConfig.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileConfig.java
index c8a964ce7a..a662ee16a6 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileConfig.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileConfig.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.annotation;
+package org.springframework.test.context.profile.annotation;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.context.annotation.Bean;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileResolverAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileResolverAnnotationConfigTests.java
similarity index 85%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileResolverAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileResolverAnnotationConfigTests.java
index a913abaf6e..d27534dab9 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileResolverAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/annotation/DevProfileResolverAnnotationConfigTests.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.importresource;
+package org.springframework.test.context.profile.annotation;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ActiveProfilesResolver;
@@ -24,7 +24,7 @@ import org.springframework.test.context.ActiveProfilesResolver;
* @since 4.0
*/
@ActiveProfiles(resolver = DevProfileResolverAnnotationConfigTests.class, inheritProfiles = false)
-public class DevProfileResolverAnnotationConfigTests extends DevProfileAnnotationConfigTests implements
+class DevProfileResolverAnnotationConfigTests extends DevProfileAnnotationConfigTests implements
ActiveProfilesResolver {
@Override
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileAnnotationConfigTests.java
similarity index 66%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileAnnotationConfigTests.java
index 73b57ef93d..bfd2fc7354 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileAnnotationConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,16 +14,14 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.importresource;
+package org.springframework.test.context.profile.importresource;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.beans.testfixture.beans.Pet;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import static org.assertj.core.api.Assertions.assertThat;
@@ -31,25 +29,24 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Juergen Hoeller
* @since 3.1
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = DefaultProfileConfig.class)
-public class DefaultProfileAnnotationConfigTests {
+@SpringJUnitConfig(DefaultProfileConfig.class)
+class DefaultProfileAnnotationConfigTests {
@Autowired
- protected Pet pet;
+ Pet pet;
@Autowired(required = false)
- protected Employee employee;
+ Employee employee;
@Test
- public void pet() {
+ void pet() {
assertThat(pet).isNotNull();
assertThat(pet.getName()).isEqualTo("Fido");
}
@Test
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should not be created for the default profile").isNull();
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileConfig.java b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileConfig.java
similarity index 83%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileConfig.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileConfig.java
index f07511b894..24a11e09fb 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DefaultProfileConfig.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DefaultProfileConfig.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.importresource;
+package org.springframework.test.context.profile.importresource;
import org.springframework.beans.testfixture.beans.Pet;
import org.springframework.context.annotation.Bean;
@@ -25,8 +25,8 @@ import org.springframework.context.annotation.ImportResource;
* @author Juergen Hoeller
* @since 3.1
*/
-@Configuration
-@ImportResource("org/springframework/test/context/junit4/profile/importresource/import.xml")
+@Configuration(proxyBeanMethods = false)
+@ImportResource("org/springframework/test/context/profile/importresource/import.xml")
public class DefaultProfileConfig {
@Bean
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileAnnotationConfigTests.java
similarity index 77%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileAnnotationConfigTests.java
index 0eb24078af..553be1ee63 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/importresource/DevProfileAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileAnnotationConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.importresource;
+package org.springframework.test.context.profile.importresource;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.test.context.ActiveProfiles;
@@ -27,11 +27,11 @@ import static org.assertj.core.api.Assertions.assertThat;
* @since 3.1
*/
@ActiveProfiles("dev")
-public class DevProfileAnnotationConfigTests extends DefaultProfileAnnotationConfigTests {
+class DevProfileAnnotationConfigTests extends DefaultProfileAnnotationConfigTests {
@Test
@Override
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should be loaded for the 'dev' profile").isNotNull();
assertThat(employee.getName()).isEqualTo("John Smith");
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileResolverAnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileResolverAnnotationConfigTests.java
similarity index 94%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileResolverAnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileResolverAnnotationConfigTests.java
index 9fe028dc7a..b388184555 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/annotation/DevProfileResolverAnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/importresource/DevProfileResolverAnnotationConfigTests.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.annotation;
+package org.springframework.test.context.profile.importresource;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ActiveProfilesResolver;
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolver.java b/spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolver.java
similarity index 73%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolver.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolver.java
index d352b5a5a4..f2a8e699f9 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/resolver/ClassNameActiveProfilesResolver.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.resolver;
+package org.springframework.test.context.profile.resolver;
import org.springframework.test.context.ActiveProfilesResolver;
@@ -22,10 +22,11 @@ import org.springframework.test.context.ActiveProfilesResolver;
* @author Michail Nikolaev
* @since 4.0
*/
-public class ClassNameActiveProfilesResolver implements ActiveProfilesResolver {
+class ClassNameActiveProfilesResolver implements ActiveProfilesResolver {
@Override
public String[] resolve(Class> testClass) {
- return new String[] { testClass.getSimpleName().toLowerCase() };
+ return new String[] { testClass.getSimpleName() };
}
+
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolverTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolverTests.java
new file mode 100644
index 0000000000..4c4c87d2dc
--- /dev/null
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/resolver/ClassNameActiveProfilesResolverTests.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.test.context.profile.resolver;
+
+import org.junit.jupiter.api.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * @author Michail Nikolaev
+ * @author Sam Brannen
+ * @since 4.0
+ */
+@SpringJUnitConfig
+@ActiveProfiles(resolver = ClassNameActiveProfilesResolver.class)
+class ClassNameActiveProfilesResolverTests {
+
+ @Test
+ void test(@Autowired Environment environment) {
+ assertThat(environment.getActiveProfiles()).contains(getClass().getSimpleName());
+ }
+
+}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DefaultProfileXmlConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DefaultProfileXmlConfigTests.java
similarity index 68%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DefaultProfileXmlConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/xml/DefaultProfileXmlConfigTests.java
index d9effe2223..14ccf3775f 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DefaultProfileXmlConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DefaultProfileXmlConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,16 +14,14 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.xml;
+package org.springframework.test.context.profile.xml;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.testfixture.beans.Employee;
import org.springframework.beans.testfixture.beans.Pet;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import static org.assertj.core.api.Assertions.assertThat;
@@ -31,25 +29,24 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 3.1
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
-public class DefaultProfileXmlConfigTests {
+@SpringJUnitConfig
+class DefaultProfileXmlConfigTests {
@Autowired
- protected Pet pet;
+ Pet pet;
@Autowired(required = false)
- protected Employee employee;
+ Employee employee;
@Test
- public void pet() {
+ void pet() {
assertThat(pet).isNotNull();
assertThat(pet.getName()).isEqualTo("Fido");
}
@Test
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should not be created for the default profile").isNull();
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileResolverXmlConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileResolverXmlConfigTests.java
similarity index 84%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileResolverXmlConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileResolverXmlConfigTests.java
index ef30225d9c..7453f36fa4 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileResolverXmlConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileResolverXmlConfigTests.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.xml;
+package org.springframework.test.context.profile.xml;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ActiveProfilesResolver;
@@ -24,7 +24,7 @@ import org.springframework.test.context.ActiveProfilesResolver;
* @since 4.0
*/
@ActiveProfiles(resolver = DevProfileResolverXmlConfigTests.class, inheritProfiles = false)
-public class DevProfileResolverXmlConfigTests extends DevProfileXmlConfigTests implements ActiveProfilesResolver {
+class DevProfileResolverXmlConfigTests extends DevProfileXmlConfigTests implements ActiveProfilesResolver {
@Override
public String[] resolve(Class> testClass) {
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileXmlConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileXmlConfigTests.java
similarity index 79%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileXmlConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileXmlConfigTests.java
index b79ef637ed..854e9c7066 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/profile/xml/DevProfileXmlConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/profile/xml/DevProfileXmlConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.profile.xml;
+package org.springframework.test.context.profile.xml;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.test.context.ActiveProfiles;
@@ -27,11 +27,11 @@ import static org.assertj.core.api.Assertions.assertThat;
* @since 3.1
*/
@ActiveProfiles("dev")
-public class DevProfileXmlConfigTests extends DefaultProfileXmlConfigTests {
+class DevProfileXmlConfigTests extends DefaultProfileXmlConfigTests {
@Test
@Override
- public void employee() {
+ void employee() {
assertThat(employee).as("employee bean should be loaded for the 'dev' profile").isNotNull();
assertThat(employee.getName()).isEqualTo("John Smith");
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/AbstractBasicWacTests.java b/spring-test/src/test/java/org/springframework/test/context/web/AbstractBasicWacTests.java
index 70d7aca319..0aefc61994 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/AbstractBasicWacTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/AbstractBasicWacTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -19,15 +19,13 @@ package org.springframework.test.context.web;
import java.io.File;
import jakarta.servlet.ServletContext;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.mock.web.MockServletContext;
-import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.request.ServletWebRequest;
@@ -38,7 +36,6 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 3.2
*/
-@RunWith(SpringRunner.class)
@WebAppConfiguration
public abstract class AbstractBasicWacTests implements ServletContextAware {
@@ -72,7 +69,7 @@ public abstract class AbstractBasicWacTests implements ServletContextAware {
}
@Test
- public void basicWacFeatures() throws Exception {
+ protected void basicWacFeatures() throws Exception {
assertThat(wac.getServletContext()).as("ServletContext should be set in the WAC.").isNotNull();
assertThat(servletContext).as("ServletContext should have been set via ServletContextAware.").isNotNull();
@@ -90,7 +87,6 @@ public abstract class AbstractBasicWacTests implements ServletContextAware {
assertThat(request.getServletContext()).as("ServletContext in the WAC and in the mock request").isSameAs(mockServletContext);
assertThat(mockServletContext.getRealPath("index.jsp")).as("Getting real path for ServletContext resource.").isEqualTo(new File("src/main/webapp/index.jsp").getCanonicalPath());
-
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/BasicAnnotationConfigWacTests.java b/spring-test/src/test/java/org/springframework/test/context/web/BasicAnnotationConfigWacTests.java
index d0c72e11e6..ec0d9a6f13 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/BasicAnnotationConfigWacTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/BasicAnnotationConfigWacTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -16,12 +16,12 @@
package org.springframework.test.context.web;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import static org.assertj.core.api.Assertions.assertThat;
@@ -29,35 +29,37 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Sam Brannen
* @since 3.2
*/
-@ContextConfiguration
-public class BasicAnnotationConfigWacTests extends AbstractBasicWacTests {
-
- @Configuration
- static class Config {
-
- @Bean
- public String foo() {
- return "enigma";
- }
-
- @Bean
- public ServletContextAwareBean servletContextAwareBean() {
- return new ServletContextAwareBean();
- }
- }
+@SpringJUnitConfig
+class BasicAnnotationConfigWacTests extends AbstractBasicWacTests {
@Autowired
- protected ServletContextAwareBean servletContextAwareBean;
+ ServletContextAwareBean servletContextAwareBean;
@Test
- public void fooEnigmaAutowired() {
+ void fooEnigmaAutowired() {
assertThat(foo).isEqualTo("enigma");
}
@Test
- public void servletContextAwareBeanProcessed() {
+ void servletContextAwareBeanProcessed() {
assertThat(servletContextAwareBean).isNotNull();
- assertThat(servletContextAwareBean.servletContext).isNotNull();
+ assertThat(servletContextAwareBean.getServletContext()).isNotNull();
+ }
+
+
+ @Configuration(proxyBeanMethods = false)
+ static class Config {
+
+ @Bean
+ String foo() {
+ return "enigma";
+ }
+
+ @Bean
+ ServletContextAwareBean servletContextAwareBean() {
+ return new ServletContextAwareBean();
+ }
+
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/BasicGroovyWacTests.java b/spring-test/src/test/java/org/springframework/test/context/web/BasicGroovyWacTests.java
index 69239d026c..980e5ca6ed 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/BasicGroovyWacTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/BasicGroovyWacTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -16,9 +16,11 @@
package org.springframework.test.context.web;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
@@ -28,11 +30,12 @@ import static org.assertj.core.api.Assertions.assertThat;
* @see BasicXmlWacTests
*/
// Config loaded from BasicGroovyWacTestsContext.groovy
+@ExtendWith(SpringExtension.class)
@ContextConfiguration
-public class BasicGroovyWacTests extends AbstractBasicWacTests {
+class BasicGroovyWacTests extends AbstractBasicWacTests {
@Test
- public void groovyFooAutowired() {
+ void groovyFooAutowired() {
assertThat(foo).isEqualTo("Groovy Foo");
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/BasicXmlWacTests.java b/spring-test/src/test/java/org/springframework/test/context/web/BasicXmlWacTests.java
index c1e9ecb368..2ff6b3cbf4 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/BasicXmlWacTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/BasicXmlWacTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -16,21 +16,26 @@
package org.springframework.test.context.web;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Sam Brannen
* @since 3.2
+ * @see BasicGroovyWacTests
*/
+// Config loaded from BasicXmlWacTests-context.xml
+@ExtendWith(SpringExtension.class)
@ContextConfiguration
-public class BasicXmlWacTests extends AbstractBasicWacTests {
+class BasicXmlWacTests extends AbstractBasicWacTests {
@Test
- public void fooBarAutowired() {
+ void fooBarAutowired() {
assertThat(foo).isEqualTo("bar");
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799AnnotationConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcAnnotationConfigTests.java
similarity index 57%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799AnnotationConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcAnnotationConfigTests.java
index 91c809c3dc..d99426870a 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799AnnotationConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcAnnotationConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 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.
@@ -14,42 +14,45 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9799;
+package org.springframework.test.context.web;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
+import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import static org.assertj.core.api.Assertions.assertThat;
+
/**
* Integration tests used to assess claims raised in
- * SPR-9799.
+ * gh-14432.
*
* @author Sam Brannen
* @since 3.2
- * @see Spr9799XmlConfigTests
+ * @see EnableWebMvcXmlConfigTests
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
+@SpringJUnitWebConfig
// NOTE: if we omit the @WebAppConfiguration declaration, the ApplicationContext will fail
// to load since @EnableWebMvc requires that the context be a WebApplicationContext.
-@WebAppConfiguration
-public class Spr9799AnnotationConfigTests {
+class EnableWebMvcAnnotationConfigTests extends AbstractBasicWacTests {
+
+ @Test
+ void applicationContextLoads(WebApplicationContext wac) {
+ assertThat(wac.getBean("foo", String.class)).isEqualTo("enigma");
+ }
+
@Configuration
@EnableWebMvc
static class Config {
- /* intentionally no beans defined */
- }
-
- @Test
- public void applicationContextLoads() {
- // no-op
+ @Bean
+ String foo() {
+ return "enigma";
+ }
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799XmlConfigTests.java b/spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcXmlConfigTests.java
similarity index 50%
rename from spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799XmlConfigTests.java
rename to spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcXmlConfigTests.java
index 37c7f93384..89545f0003 100644
--- a/spring-test/src/test/java/org/springframework/test/context/junit4/spr9799/Spr9799XmlConfigTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/EnableWebMvcXmlConfigTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 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.
@@ -14,30 +14,29 @@
* limitations under the License.
*/
-package org.springframework.test.context.junit4.spr9799;
+package org.springframework.test.context.web;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
+import org.springframework.web.context.WebApplicationContext;
+
+import static org.assertj.core.api.Assertions.assertThat;
/**
* Integration tests used to assess claims raised in
- * SPR-9799.
+ * gh-14432.
*
* @author Sam Brannen
* @since 3.2
- * @see Spr9799AnnotationConfigTests
+ * @see EnableWebMvcAnnotationConfigTests
*/
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
-public class Spr9799XmlConfigTests {
+@SpringJUnitWebConfig
+class EnableWebMvcXmlConfigTests extends AbstractBasicWacTests {
@Test
- public void applicationContextLoads() {
- // nothing to assert: we just want to make sure that the context loads without
- // errors.
+ void applicationContextLoads(WebApplicationContext wac) {
+ assertThat(wac.getBean("foo", String.class)).isEqualTo("enigma");
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBean.java b/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBean.java
index d9f0109ca0..6c6c951803 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBean.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 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.
@@ -28,11 +28,15 @@ import org.springframework.web.context.ServletContextAware;
*/
public class ServletContextAwareBean implements ServletContextAware {
- protected ServletContext servletContext;
+ private ServletContext servletContext;
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
+ public ServletContext getServletContext() {
+ return this.servletContext;
+ }
+
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBeanWacTests.java b/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBeanWacTests.java
index d4eb31e33b..aa9059d778 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBeanWacTests.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/ServletContextAwareBeanWacTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 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.
@@ -16,9 +16,13 @@
package org.springframework.test.context.web;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.platform.testkit.engine.EngineTestKit;
-import static org.springframework.test.context.junit4.JUnitTestingUtils.runTestsAndAssertCounters;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
/**
* Introduced to investigate claims in SPR-11145.
@@ -28,11 +32,16 @@ import static org.springframework.test.context.junit4.JUnitTestingUtils.runTests
* @author Sam Brannen
* @since 4.0.2
*/
-public class ServletContextAwareBeanWacTests {
+@ExtendWith(SpringExtension.class)
+class ServletContextAwareBeanWacTests {
@Test
- public void ensureServletContextAwareBeanIsProcessedProperlyWhenExecutingJUnitManually() throws Exception {
- runTestsAndAssertCounters(BasicAnnotationConfigWacTests.class, 3, 0, 3, 0, 0);
+ void ensureServletContextAwareBeanIsProcessedProperlyWhenExecutingJUnitManually() {
+ EngineTestKit.engine("junit-jupiter")
+ .selectors(selectClass(BasicAnnotationConfigWacTests.class))
+ .execute()
+ .testEvents()
+ .assertStatistics(stats -> stats.started(3).succeeded(3).failed(0));
}
}
diff --git a/spring-test/src/test/java/org/springframework/test/context/web/WebTestConfiguration.java b/spring-test/src/test/java/org/springframework/test/context/web/WebTestConfiguration.java
index 1aab367a58..d8dc4b3bdf 100644
--- a/spring-test/src/test/java/org/springframework/test/context/web/WebTestConfiguration.java
+++ b/spring-test/src/test/java/org/springframework/test/context/web/WebTestConfiguration.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.
@@ -36,11 +36,12 @@ import org.springframework.test.context.ContextConfiguration;
public @interface WebTestConfiguration {
}
-@Configuration
+@Configuration(proxyBeanMethods = false)
class FooConfig {
@Bean
public String foo() {
return "enigma";
}
+
}
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr6128/AutowiredQualifierTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/AutowiredQualifierTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/spr6128/AutowiredQualifierTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/AutowiredQualifierTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/hybrid/HybridContextLoaderTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/hybrid/HybridContextLoaderTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/hybrid/HybridContextLoaderTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/hybrid/HybridContextLoaderTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/BeanOverridingDefaultLocationsInheritedTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/inheritance/BeanOverridingDefaultLocationsInheritedTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/BeanOverridingDefaultLocationsInheritedTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/inheritance/BeanOverridingDefaultLocationsInheritedTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/DefaultLocationsBaseTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/inheritance/DefaultLocationsBaseTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/DefaultLocationsBaseTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/inheritance/DefaultLocationsBaseTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/DefaultLocationsInheritedTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/inheritance/DefaultLocationsInheritedTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/spr3896/DefaultLocationsInheritedTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/inheritance/DefaultLocationsInheritedTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/aci/xml/MultipleInitializersXmlConfigTests-context.xml b/spring-test/src/test/resources/org/springframework/test/context/initializers/xml/MultipleInitializersXmlConfigTests-context.xml
similarity index 100%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/aci/xml/MultipleInitializersXmlConfigTests-context.xml
rename to spring-test/src/test/resources/org/springframework/test/context/initializers/xml/MultipleInitializersXmlConfigTests-context.xml
diff --git a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr8849/datasource-config-with-auto-generated-db-name.xml b/spring-test/src/test/resources/org/springframework/test/context/jdbc/datasource-config-with-auto-generated-db-name.xml
similarity index 93%
rename from spring-test/src/test/resources/org/springframework/test/context/junit4/spr8849/datasource-config-with-auto-generated-db-name.xml
rename to spring-test/src/test/resources/org/springframework/test/context/jdbc/datasource-config-with-auto-generated-db-name.xml
index 0ee91d260f..5b30a9820d 100644
--- a/spring-test/src/test/resources/org/springframework/test/context/junit4/spr8849/datasource-config-with-auto-generated-db-name.xml
+++ b/spring-test/src/test/resources/org/springframework/test/context/jdbc/datasource-config-with-auto-generated-db-name.xml
@@ -6,7 +6,7 @@
http://www.springframework.org/schema/jdbc https://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd">
Work Around
- * Solution
- *
-