From 069c6788f52916acd2e90be5cd5ee72b4f4ab810 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:47:32 +0200 Subject: [PATCH] Polishing --- .../TestBeanInheritanceIntegrationTests.java | 39 ++++++++++++------- .../TestBeanOverrideProcessorTests.java | 33 +++++++--------- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanInheritanceIntegrationTests.java b/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanInheritanceIntegrationTests.java index 22ff82cdca3..70a73a8fdbb 100644 --- a/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanInheritanceIntegrationTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanInheritanceIntegrationTests.java @@ -20,13 +20,19 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.test.context.bean.override.convention.AbstractTestBeanIntegrationTestCase.FakePojo; +import org.springframework.test.context.bean.override.convention.AbstractTestBeanIntegrationTestCase.Pojo; import static org.assertj.core.api.Assertions.assertThat; /** * {@link TestBean @TestBean} inheritance integration tests for success scenarios. * + *

Tests inheritance within a class hierarchy as well as "inheritance" within + * an enclosing class hierarchy. + * * @author Simon Baslé * @author Sam Brannen * @since 6.2 @@ -34,13 +40,16 @@ import static org.assertj.core.api.Assertions.assertThat; */ public class TestBeanInheritanceIntegrationTests { - static AbstractTestBeanIntegrationTestCase.Pojo enclosingClassBeanOverride() { - return new AbstractTestBeanIntegrationTestCase.FakePojo("in enclosing test class"); + static Pojo enclosingClassBeanOverride() { + return new FakePojo("in enclosing test class"); } @Nested - @DisplayName("Concrete inherited test with correct @TestBean setup") - public class ConcreteTestBeanIntegrationTests extends AbstractTestBeanIntegrationTestCase { + @DisplayName("Nested, concrete inherited tests with correct @TestBean setup") + public class NestedConcreteTestBeanIntegrationTests extends AbstractTestBeanIntegrationTestCase { + + @Autowired + ApplicationContext ctx; @TestBean(name = "pojo", methodName = "commonBeanOverride") Pojo pojo; @@ -53,28 +62,28 @@ public class TestBeanInheritanceIntegrationTests { } @Test - void fieldInSupertypeMethodInType(ApplicationContext ctx) { - assertThat(ctx.getBean("someBean")).as("applicationContext").hasToString("someBeanOverride"); - assertThat(this.someBean.getValue()).as("injection point").isEqualTo("someBeanOverride"); - } - - @Test - void fieldInTypeMethodInSuperType(ApplicationContext ctx) { + void fieldInSubtypeWithFactoryMethodInSupertype() { assertThat(ctx.getBean("pojo")).as("applicationContext").hasToString("in superclass"); assertThat(this.pojo.getValue()).as("injection point").isEqualTo("in superclass"); } @Test - void fieldInTypeMethodInEnclosingClass(ApplicationContext ctx) { - assertThat(ctx.getBean("pojo2")).as("applicationContext").hasToString("in enclosing test class"); - assertThat(this.pojo2.getValue()).as("injection point").isEqualTo("in enclosing test class"); + void fieldInSupertypeWithFactoryMethodInSubtype() { + assertThat(ctx.getBean("someBean")).as("applicationContext").hasToString("someBeanOverride"); + assertThat(this.someBean.getValue()).as("injection point").isEqualTo("someBeanOverride"); } @Test - void fieldInSupertypePrioritizeMethodInType(ApplicationContext ctx) { + void fieldInSupertypeWithPrioritizedFactoryMethodInSubtype() { assertThat(ctx.getBean("someBean")).as("applicationContext").hasToString("someBeanOverride"); assertThat(this.someBean.getValue()).as("injection point").isEqualTo("someBeanOverride"); } + + @Test + void fieldInNestedClassWithFactoryMethodInEnclosingClass() { + assertThat(ctx.getBean("pojo2")).as("applicationContext").hasToString("in enclosing test class"); + assertThat(this.pojo2.getValue()).as("injection point").isEqualTo("in enclosing test class"); + } } } diff --git a/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessorTests.java b/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessorTests.java index 90f45c4f1cd..f6874d5bb80 100644 --- a/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessorTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessorTests.java @@ -22,12 +22,10 @@ import java.util.List; import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Bean; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.lang.NonNull; import org.springframework.test.context.bean.override.convention.TestBeanOverrideProcessor.TestBeanOverrideMetadata; import org.springframework.test.context.bean.override.example.ExampleService; -import org.springframework.test.context.bean.override.example.FailingExampleService; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; @@ -45,7 +43,7 @@ class TestBeanOverrideProcessorTests { @Test void findTestBeanFactoryMethodFindsFromCandidateNames() { - Class clazz = MethodConventionConf.class; + Class clazz = MethodConventionTestCase.class; Class returnType = ExampleService.class; Method method = findTestBeanFactoryMethod(clazz, returnType, "example1", "example2", "example3"); @@ -55,7 +53,7 @@ class TestBeanOverrideProcessorTests { @Test void findTestBeanFactoryMethodNotFound() { - Class clazz = MethodConventionConf.class; + Class clazz = MethodConventionTestCase.class; Class returnType = ExampleService.class; assertThatIllegalStateException() @@ -68,7 +66,7 @@ class TestBeanOverrideProcessorTests { @Test void findTestBeanFactoryMethodTwoFound() { - Class clazz = MethodConventionConf.class; + Class clazz = MethodConventionTestCase.class; Class returnType = ExampleService.class; assertThatIllegalStateException() @@ -82,13 +80,13 @@ class TestBeanOverrideProcessorTests { @Test void findTestBeanFactoryMethodNoNameProvided() { assertThatIllegalArgumentException() - .isThrownBy(() -> findTestBeanFactoryMethod(MethodConventionConf.class, ExampleService.class)) + .isThrownBy(() -> findTestBeanFactoryMethod(MethodConventionTestCase.class, ExampleService.class)) .withMessage("At least one candidate method name is required"); } @Test void createMetaDataForUnknownExplicitMethod() throws Exception { - Class clazz = ExplicitMethodNameConf.class; + Class clazz = ExplicitMethodNameTestCase.class; Class returnType = ExampleService.class; Field field = clazz.getField("a"); TestBean overrideAnnotation = field.getAnnotation(TestBean.class); @@ -105,7 +103,7 @@ class TestBeanOverrideProcessorTests { @Test void createMetaDataForKnownExplicitMethod() throws Exception { - Class clazz = ExplicitMethodNameConf.class; + Class clazz = ExplicitMethodNameTestCase.class; Field field = clazz.getField("b"); TestBean overrideAnnotation = field.getAnnotation(TestBean.class); assertThat(overrideAnnotation).isNotNull(); @@ -118,7 +116,7 @@ class TestBeanOverrideProcessorTests { @Test void createMetaDataForConventionBasedFactoryMethod() throws Exception { Class returnType = ExampleService.class; - Class clazz = MethodConventionConf.class; + Class clazz = MethodConventionTestCase.class; Field field = clazz.getField("field"); TestBean overrideAnnotation = field.getAnnotation(TestBean.class); assertThat(overrideAnnotation).isNotNull(); @@ -134,7 +132,7 @@ class TestBeanOverrideProcessorTests { @Test void failToCreateMetadataForOtherAnnotation() throws NoSuchFieldException { - Class clazz = MethodConventionConf.class; + Class clazz = MethodConventionTestCase.class; Field field = clazz.getField("field"); NonNull badAnnotation = AnnotationUtils.synthesizeAnnotation(NonNull.class); @@ -145,26 +143,25 @@ class TestBeanOverrideProcessorTests { } - static class MethodConventionConf { + static class MethodConventionTestCase { @TestBean(name = "someField") public ExampleService field; - @Bean ExampleService example1() { - return new FailingExampleService(); + return null; } static ExampleService example2() { - return new FailingExampleService(); + return null; } - public static ExampleService example4() { - return new FailingExampleService(); + static ExampleService example4() { + return null; } } - static class ExplicitMethodNameConf { + static class ExplicitMethodNameTestCase { @TestBean(methodName = "explicit1") public ExampleService a; @@ -173,7 +170,7 @@ class TestBeanOverrideProcessorTests { public ExampleService b; static ExampleService explicit2() { - return new FailingExampleService(); + return null; } }