diff --git a/spring-test/src/test/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessorTests.java b/spring-test/src/test/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessorTests.java index a24ecb68db..cf6c38e553 100644 --- a/spring-test/src/test/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessorTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessorTests.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanWrapper; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -72,7 +71,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithMatchingBeanDefinition() { - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); context.registerBean("descriptionBean", String.class, () -> "Original"); context.refresh(); @@ -81,7 +80,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithoutMatchingBeanDefinitionFails() { - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); assertThatIllegalStateException() .isThrownBy(context::refresh) @@ -91,7 +90,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithMatchingBeanDefinitionAndWrongTypeFails() { - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); context.registerBean("descriptionBean", Integer.class, () -> -1); assertThatIllegalStateException() @@ -117,7 +116,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { } private AnnotationConfigApplicationContext prepareContextWithFactoryBean(Object objectTypeAttribute) { - AnnotationConfigApplicationContext context = createContext(CaseOverrideBeanProducedByFactoryBean.class); + AnnotationConfigApplicationContext context = createContext(OverrideBeanProducedByFactoryBeanTestCase.class); // Register a TestFactoryBean that will not be overridden context.registerBean("testFactoryBean", TestFactoryBean.class, TestFactoryBean::new); // Register another TestFactoryBean that will be overridden @@ -129,7 +128,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByTypeWithSingleMatchingBean() { - AnnotationConfigApplicationContext context = createContext(CaseByType.class); + AnnotationConfigApplicationContext context = createContext(ByTypeTestCase.class); context.registerBean("someInteger", Integer.class, () -> 1); context.refresh(); @@ -138,30 +137,30 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByTypeWithoutMatchingBeanFails() { - AnnotationConfigApplicationContext context = createContext(CaseByType.class); + AnnotationConfigApplicationContext context = createContext(ByTypeTestCase.class); assertThatIllegalStateException() .isThrownBy(context::refresh) .withMessage("Unable to override bean: no beans of type java.lang.Integer " + - "(as required by annotated field 'CaseByType.counter')"); + "(as required by annotated field 'ByTypeTestCase.counter')"); } @Test - void replaceBeanByTypeWithMultipleMatchesAndNoQualifierFails() { - AnnotationConfigApplicationContext context = createContext(CaseByType.class); + void replaceBeanByTypeWithMultipleCandidatesAndNoQualifierFails() { + AnnotationConfigApplicationContext context = createContext(ByTypeTestCase.class); context.registerBean("someInteger", Integer.class, () -> 1); context.registerBean("anotherInteger", Integer.class, () -> 2); assertThatIllegalStateException() .isThrownBy(context::refresh) .withMessage("Unable to select a bean to override: found 2 beans " + - "of type java.lang.Integer (as required by annotated field 'CaseByType.counter'): " + + "of type java.lang.Integer (as required by annotated field 'ByTypeTestCase.counter'): " + "[someInteger, anotherInteger]"); } @Test - void replaceBeanByTypeWithMultipleMatchesAndFieldNameAsFallbackQualifierMatches() { - AnnotationConfigApplicationContext context = createContext(CaseByType.class); + void replaceBeanByTypeWithMultipleCandidatesAndFieldNameAsFallbackQualifier() { + AnnotationConfigApplicationContext context = createContext(ByTypeTestCase.class); context.registerBean("counter", Integer.class, () -> 1); context.registerBean("someInteger", Integer.class, () -> 2); context.refresh(); @@ -206,7 +205,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void createOrReplaceBeanByNameWithMatchingBeanDefinition() { - AnnotationConfigApplicationContext context = createContext(CaseByNameWithReplaceOrCreateStrategy.class); + AnnotationConfigApplicationContext context = createContext(ByNameWithReplaceOrCreateStrategyTestCase.class); context.registerBean("descriptionBean", String.class, () -> "Original"); context.refresh(); @@ -215,7 +214,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void createOrReplaceBeanByNameWithoutMatchingDefinitionCreatesBeanDefinition() { - AnnotationConfigApplicationContext context = createContext(CaseByNameWithReplaceOrCreateStrategy.class); + AnnotationConfigApplicationContext context = createContext(ByNameWithReplaceOrCreateStrategyTestCase.class); context.refresh(); assertThat(context.getBean("descriptionBean")).isEqualTo("overridden"); @@ -223,7 +222,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void createOrReplaceBeanByTypeWithMatchingBean() { - AnnotationConfigApplicationContext context = createContext(CaseByTypeWithReplaceOrCreateStrategy.class); + AnnotationConfigApplicationContext context = createContext(ByTypeWithReplaceOrCreateStrategyTestCase.class); context.registerBean("someBean", String.class, () -> "Original"); context.refresh(); @@ -232,7 +231,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void createOrReplaceBeanByTypeWithoutMatchingDefinitionCreatesBeanDefinition() { - AnnotationConfigApplicationContext context = createContext(CaseByTypeWithReplaceOrCreateStrategy.class); + AnnotationConfigApplicationContext context = createContext(ByTypeWithReplaceOrCreateStrategyTestCase.class); context.refresh(); String generatedBeanName = "java.lang.String#0"; @@ -242,7 +241,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void postProcessorShouldNotTriggerEarlyInitialization() { - AnnotationConfigApplicationContext context = createContext(CaseByTypeWithReplaceOrCreateStrategy.class); + AnnotationConfigApplicationContext context = createContext(ByTypeWithReplaceOrCreateStrategyTestCase.class); context.register(FactoryBeanRegisteringPostProcessor.class); context.register(EarlyBeanInitializationDetector.class); @@ -252,7 +251,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithMatchingBeanDefinitionWithExplicitSingletonScope() { - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL"); definition.setScope(BeanDefinition.SCOPE_SINGLETON); context.registerBeanDefinition("descriptionBean", definition); @@ -265,7 +264,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithMatchingBeanDefinitionForClassBasedSingletonFactoryBean() { String beanName = "descriptionBean"; - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); RootBeanDefinition factoryBeanDefinition = new RootBeanDefinition(SingletonStringFactoryBean.class); context.registerBeanDefinition(beanName, factoryBeanDefinition); @@ -277,7 +276,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test // gh-33800 void replaceBeanByNameWithMatchingBeanDefinitionForClassBasedNonSingletonFactoryBean() { String beanName = "descriptionBean"; - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); RootBeanDefinition factoryBeanDefinition = new RootBeanDefinition(NonSingletonStringFactoryBean.class); context.registerBeanDefinition(beanName, factoryBeanDefinition); @@ -314,7 +313,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { void replaceBeanByNameWithMatchingBeanDefinitionWithPrototypeScopeFails() { String beanName = "descriptionBean"; - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL"); definition.setScope(BeanDefinition.SCOPE_PROTOTYPE); context.registerBeanDefinition(beanName, definition); @@ -329,7 +328,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { String beanName = "descriptionBean"; String scope = "customScope"; - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); beanFactory.registerScope(scope, new SimpleThreadScope()); RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL"); @@ -356,7 +355,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void replaceBeanByNameWithMatchingBeanDefinitionRetainsPrimaryAndFallbackFlags() { - AnnotationConfigApplicationContext context = createContext(CaseByName.class); + AnnotationConfigApplicationContext context = createContext(ByNameTestCase.class); RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL"); definition.setPrimary(true); definition.setFallback(true); @@ -373,7 +372,7 @@ class BeanOverrideBeanFactoryPostProcessorTests { @Test void qualifiedElementIsSetToBeanOverrideFieldForNonexistentBeanDefinition() { - AnnotationConfigApplicationContext context = createContext(CaseByNameWithQualifier.class); + AnnotationConfigApplicationContext context = createContext(TestBeanByNameTestCase.class); assertThatNoException().isThrownBy(context::refresh); assertThat(context.getBeanDefinition("descriptionBean")) @@ -384,12 +383,12 @@ class BeanOverrideBeanFactoryPostProcessorTests { private void qualifiedElementIsField(RootBeanDefinition def) { assertThat(def.getQualifiedElement()).isInstanceOfSatisfying(Field.class, field -> { - assertThat(field.getDeclaringClass()).isEqualTo(CaseByNameWithQualifier.class); + assertThat(field.getDeclaringClass()).isEqualTo(TestBeanByNameTestCase.class); assertThat(field.getName()).as("annotated field name").isEqualTo("description"); }); } - private AnnotationConfigApplicationContext createContext(Class testClass) { + private static AnnotationConfigApplicationContext createContext(Class testClass) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); Set handlers = new LinkedHashSet<>(BeanOverrideHandler.forTestClass(testClass)); new BeanOverrideContextCustomizer(handlers).customizeContext(context, mock(MergedContextConfiguration.class)); @@ -409,35 +408,35 @@ class BeanOverrideBeanFactoryPostProcessorTests { } - static class CaseByName { + static class ByNameTestCase { @DummyBean(beanName = "descriptionBean") private String description; } - static class CaseByType { + static class ByTypeTestCase { @DummyBean private Integer counter; } - static class CaseByNameWithReplaceOrCreateStrategy { + static class ByNameWithReplaceOrCreateStrategyTestCase { @DummyBean(beanName = "descriptionBean", strategy = BeanOverrideStrategy.REPLACE_OR_CREATE) private String description; } - static class CaseByTypeWithReplaceOrCreateStrategy { + static class ByTypeWithReplaceOrCreateStrategyTestCase { @DummyBean(strategy = BeanOverrideStrategy.REPLACE_OR_CREATE) private String description; } - static class CaseByNameAndByTypeWithReplaceOrCreateStrategy { + static class ByNameAndByTypeWithReplaceOrCreateStrategyTestCase { @DummyBean(beanName = "descriptionBean", strategy = BeanOverrideStrategy.REPLACE_OR_CREATE) private String description; @@ -447,18 +446,17 @@ class BeanOverrideBeanFactoryPostProcessorTests { } - static class CaseOverrideBeanProducedByFactoryBean { + static class OverrideBeanProducedByFactoryBeanTestCase { @DummyBean(beanName = "beanToBeOverridden") CharSequence description; } - static class CaseByNameWithQualifier { + static class TestBeanByNameTestCase { - @Qualifier("preferThis") @TestBean(name = "descriptionBean") - private String description; + String description; static String descriptionBean() { return "overridden";