Skip to content

Commit 2137750

Browse files
committed
Improve Bean Override by-name integration tests
1 parent 13df905 commit 2137750

File tree

3 files changed

+159
-51
lines changed

3 files changed

+159
-51
lines changed

spring-test/src/test/java/org/springframework/test/context/bean/override/convention/TestBeanForByNameLookupIntegrationTests.java

+60-23
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,12 @@ public class TestBeanForByNameLookupIntegrationTests {
4040
@TestBean(name = "field")
4141
String field;
4242

43-
@TestBean(name = "nestedField")
44-
String nestedField;
45-
4643
@TestBean(name = "field")
47-
String renamed1;
48-
49-
@TestBean(name = "nestedField")
50-
String renamed2;
44+
String renamed;
5145

5246
@TestBean(name = "methodRenamed1", methodName = "field")
5347
String methodRenamed1;
5448

55-
@TestBean(name = "methodRenamed2", methodName = "nestedField")
56-
String methodRenamed2;
57-
5849
static String field() {
5950
return "fieldOverride";
6051
}
@@ -66,62 +57,108 @@ static String nestedField() {
6657
@Test
6758
void fieldHasOverride(ApplicationContext ctx) {
6859
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
69-
assertThat(this.field).as("injection point").isEqualTo("fieldOverride");
60+
assertThat(field).as("injection point").isEqualTo("fieldOverride");
7061
}
7162

7263
@Test
7364
void renamedFieldHasOverride(ApplicationContext ctx) {
7465
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
75-
assertThat(this.renamed1).as("injection point").isEqualTo("fieldOverride");
66+
assertThat(renamed).as("injection point").isEqualTo("fieldOverride");
7667
}
7768

7869
@Test
7970
void fieldWithMethodNameHasOverride(ApplicationContext ctx) {
8071
assertThat(ctx.getBean("methodRenamed1")).as("applicationContext").isEqualTo("fieldOverride");
81-
assertThat(this.methodRenamed1).as("injection point").isEqualTo("fieldOverride");
72+
assertThat(methodRenamed1).as("injection point").isEqualTo("fieldOverride");
8273
}
8374

8475

8576
@Nested
86-
@DisplayName("With @TestBean in enclosing class")
77+
@DisplayName("With @TestBean in enclosing class and in @Nested class")
8778
public class TestBeanFieldInEnclosingClassTests {
8879

80+
@TestBean(name = "nestedField")
81+
String nestedField;
82+
83+
@TestBean(name = "nestedField")
84+
String renamed2;
85+
86+
@TestBean(name = "methodRenamed2", methodName = "nestedField")
87+
String methodRenamed2;
88+
89+
8990
@Test
9091
void fieldHasOverride(ApplicationContext ctx) {
92+
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
93+
assertThat(field).as("injection point").isEqualTo("fieldOverride");
94+
}
95+
96+
@Test
97+
void renamedFieldHasOverride(ApplicationContext ctx) {
98+
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
99+
assertThat(renamed).as("injection point").isEqualTo("fieldOverride");
100+
}
101+
102+
@Test
103+
void fieldWithMethodNameHasOverride(ApplicationContext ctx) {
104+
assertThat(ctx.getBean("methodRenamed1")).as("applicationContext").isEqualTo("fieldOverride");
105+
assertThat(methodRenamed1).as("injection point").isEqualTo("fieldOverride");
106+
}
107+
108+
@Test
109+
void nestedFieldHasOverride(ApplicationContext ctx) {
91110
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
92111
assertThat(nestedField).isEqualTo("nestedFieldOverride");
93112
}
94113

95114
@Test
96-
void renamedFieldHasOverride(ApplicationContext ctx) {
115+
void nestedRenamedFieldHasOverride(ApplicationContext ctx) {
97116
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
98117
assertThat(renamed2).isEqualTo("nestedFieldOverride");
99118
}
100119

101120
@Test
102-
void fieldWithMethodNameHasOverride(ApplicationContext ctx) {
121+
void nestedFieldWithMethodNameHasOverride(ApplicationContext ctx) {
103122
assertThat(ctx.getBean("methodRenamed2")).as("applicationContext").isEqualTo("nestedFieldOverride");
104123
assertThat(methodRenamed2).isEqualTo("nestedFieldOverride");
105124
}
106125

107126
@Nested
108-
@DisplayName("With @TestBean in the enclosing class of the enclosing class")
127+
@DisplayName("With @TestBean in the enclosing classes")
109128
public class TestBeanFieldInEnclosingClassLevel2Tests {
110129

111130
@Test
112131
void fieldHasOverride(ApplicationContext ctx) {
132+
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
133+
assertThat(field).as("injection point").isEqualTo("fieldOverride");
134+
}
135+
136+
@Test
137+
void renamedFieldHasOverride(ApplicationContext ctx) {
138+
assertThat(ctx.getBean("field")).as("applicationContext").isEqualTo("fieldOverride");
139+
assertThat(renamed).as("injection point").isEqualTo("fieldOverride");
140+
}
141+
142+
@Test
143+
void fieldWithMethodNameHasOverride(ApplicationContext ctx) {
144+
assertThat(ctx.getBean("methodRenamed1")).as("applicationContext").isEqualTo("fieldOverride");
145+
assertThat(methodRenamed1).as("injection point").isEqualTo("fieldOverride");
146+
}
147+
148+
@Test
149+
void nestedFieldHasOverride(ApplicationContext ctx) {
113150
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
114151
assertThat(nestedField).isEqualTo("nestedFieldOverride");
115152
}
116153

117154
@Test
118-
void renamedFieldHasOverride(ApplicationContext ctx) {
155+
void nestedRenamedFieldHasOverride(ApplicationContext ctx) {
119156
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
120157
assertThat(renamed2).isEqualTo("nestedFieldOverride");
121158
}
122159

123160
@Test
124-
void fieldWithMethodNameHasOverride(ApplicationContext ctx) {
161+
void nestedFieldWithMethodNameHasOverride(ApplicationContext ctx) {
125162
assertThat(ctx.getBean("methodRenamed2")).as("applicationContext").isEqualTo("nestedFieldOverride");
126163
assertThat(methodRenamed2).isEqualTo("nestedFieldOverride");
127164
}
@@ -136,9 +173,9 @@ public class TestBeanFactoryMethodInEnclosingClassTests {
136173
String nestedField2;
137174

138175
@Test
139-
void fieldHasOverride(ApplicationContext ctx) {
176+
void nestedFieldHasOverride(ApplicationContext ctx) {
140177
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
141-
assertThat(this.nestedField2).isEqualTo("nestedFieldOverride");
178+
assertThat(nestedField2).isEqualTo("nestedFieldOverride");
142179
}
143180

144181
@Nested
@@ -149,9 +186,9 @@ public class TestBeanFactoryMethodInEnclosingClassLevel2Tests {
149186
String nestedField2;
150187

151188
@Test
152-
void fieldHasOverride(ApplicationContext ctx) {
189+
void nestedFieldHasOverride(ApplicationContext ctx) {
153190
assertThat(ctx.getBean("nestedField")).as("applicationContext").isEqualTo("nestedFieldOverride");
154-
assertThat(this.nestedField2).isEqualTo("nestedFieldOverride");
191+
assertThat(nestedField2).isEqualTo("nestedFieldOverride");
155192
}
156193
}
157194
}

spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/MockitoBeanForByNameLookupIntegrationTests.java

+62-21
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.junit.jupiter.api.Nested;
2121
import org.junit.jupiter.api.Test;
2222

23+
import org.springframework.beans.factory.annotation.Autowired;
24+
import org.springframework.beans.factory.annotation.Qualifier;
2325
import org.springframework.context.ApplicationContext;
2426
import org.springframework.context.annotation.Bean;
2527
import org.springframework.context.annotation.Configuration;
@@ -32,71 +34,110 @@
3234

3335
/**
3436
* Integration tests for {@link MockitoBean} that use by-name lookup.
37+
*
38+
* @author Simon Baslé
39+
* @author Sam Brannen
40+
* @since 6.2
3541
*/
3642
@SpringJUnitConfig
3743
public class MockitoBeanForByNameLookupIntegrationTests {
3844

3945
@MockitoBean("field")
4046
ExampleService field;
4147

42-
@MockitoBean("nestedField")
43-
ExampleService nestedField;
44-
4548
@MockitoBean("field")
46-
ExampleService renamed1;
47-
48-
@MockitoBean("nestedField")
49-
ExampleService renamed2;
49+
ExampleService renamed;
5050

5151
@MockitoBean("nonExistingBean")
52-
ExampleService nonExisting1;
53-
54-
@MockitoBean("nestedNonExistingBean")
55-
ExampleService nonExisting2;
52+
ExampleService nonExisting;
5653

5754

5855
@Test
5956
void fieldAndRenamedFieldHaveSameOverride(ApplicationContext ctx) {
6057
assertThat(ctx.getBean("field"))
6158
.isInstanceOf(ExampleService.class)
6259
.satisfies(MockitoAssertions::assertIsMock)
63-
.isSameAs(this.field)
64-
.isSameAs(this.renamed1);
60+
.isSameAs(field)
61+
.isSameAs(renamed);
6562

66-
assertThat(this.field.greeting()).as("mocked greeting").isNull();
67-
assertThat(this.renamed1.greeting()).as("mocked greeting").isNull();
63+
assertThat(field.greeting()).as("mocked greeting").isNull();
64+
assertThat(renamed.greeting()).as("mocked greeting").isNull();
6865
}
6966

7067
@Test
7168
void fieldIsMockedWhenNoOriginalBean(ApplicationContext ctx) {
7269
assertThat(ctx.getBean("nonExistingBean"))
7370
.isInstanceOf(ExampleService.class)
7471
.satisfies(MockitoAssertions::assertIsMock)
75-
.isSameAs(this.nonExisting1);
72+
.isSameAs(nonExisting);
7673

77-
assertThat(this.nonExisting1.greeting()).as("mocked greeting").isNull();
74+
assertThat(nonExisting.greeting()).as("mocked greeting").isNull();
7875
}
7976

8077

8178
@Nested
82-
@DisplayName("With @MockitoBean in enclosing class")
79+
@DisplayName("With @MockitoBean in enclosing class and in @Nested class")
8380
public class MockitoBeanNestedTests {
8481

82+
@Autowired
83+
@Qualifier("field")
84+
ExampleService localField;
85+
86+
@Autowired
87+
@Qualifier("field")
88+
ExampleService localRenamed;
89+
90+
@Autowired
91+
@Qualifier("nonExistingBean")
92+
ExampleService localNonExisting;
93+
94+
@MockitoBean("nestedField")
95+
ExampleService nestedField;
96+
97+
@MockitoBean("nestedField")
98+
ExampleService nestedRenamed;
99+
100+
@MockitoBean("nestedNonExistingBean")
101+
ExampleService nestedNonExisting;
102+
103+
85104
@Test
86105
void fieldAndRenamedFieldHaveSameOverride(ApplicationContext ctx) {
106+
assertThat(ctx.getBean("field"))
107+
.isInstanceOf(ExampleService.class)
108+
.satisfies(MockitoAssertions::assertIsMock)
109+
.isSameAs(localField)
110+
.isSameAs(localRenamed);
111+
112+
assertThat(localField.greeting()).as("mocked greeting").isNull();
113+
assertThat(localRenamed.greeting()).as("mocked greeting").isNull();
114+
}
115+
116+
@Test
117+
void fieldIsMockedWhenNoOriginalBean(ApplicationContext ctx) {
118+
assertThat(ctx.getBean("nonExistingBean"))
119+
.isInstanceOf(ExampleService.class)
120+
.satisfies(MockitoAssertions::assertIsMock)
121+
.isSameAs(localNonExisting);
122+
123+
assertThat(localNonExisting.greeting()).as("mocked greeting").isNull();
124+
}
125+
126+
@Test
127+
void nestedFieldAndRenamedFieldHaveSameOverride(ApplicationContext ctx) {
87128
assertThat(ctx.getBean("nestedField"))
88129
.isInstanceOf(ExampleService.class)
89130
.satisfies(MockitoAssertions::assertIsMock)
90131
.isSameAs(nestedField)
91-
.isSameAs(renamed2);
132+
.isSameAs(nestedRenamed);
92133
}
93134

94135
@Test
95-
void fieldIsMockedWhenNoOriginalBean(ApplicationContext ctx) {
136+
void nestedFieldIsMockedWhenNoOriginalBean(ApplicationContext ctx) {
96137
assertThat(ctx.getBean("nestedNonExistingBean"))
97138
.isInstanceOf(ExampleService.class)
98139
.satisfies(MockitoAssertions::assertIsMock)
99-
.isSameAs(nonExisting2);
140+
.isSameAs(nestedNonExisting);
100141
}
101142
}
102143

spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBeanForByNameLookupIntegrationTests.java

+37-7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.junit.jupiter.api.Nested;
2121
import org.junit.jupiter.api.Test;
2222

23+
import org.springframework.beans.factory.annotation.Autowired;
24+
import org.springframework.beans.factory.annotation.Qualifier;
2325
import org.springframework.context.ApplicationContext;
2426
import org.springframework.context.annotation.Bean;
2527
import org.springframework.context.annotation.Configuration;
@@ -45,7 +47,7 @@ public class MockitoSpyBeanForByNameLookupIntegrationTests {
4547
ExampleService field;
4648

4749
@MockitoSpyBean("field1")
48-
ExampleService renamed1;
50+
ExampleService renamed;
4951

5052

5153
@Test
@@ -63,23 +65,51 @@ void renamedFieldHasOverride(ApplicationContext ctx) {
6365
assertThat(ctx.getBean("field1"))
6466
.isInstanceOf(ExampleService.class)
6567
.satisfies(MockitoAssertions::assertIsSpy)
66-
.isSameAs(renamed1);
68+
.isSameAs(renamed);
6769

68-
assertThat(renamed1.greeting()).isEqualTo("bean1");
70+
assertThat(renamed.greeting()).isEqualTo("bean1");
6971
}
7072

7173
@Nested
7274
@DisplayName("With @MockitoSpyBean in enclosing class and in @Nested class")
7375
public class MockitoSpyBeanNestedTests {
7476

77+
@Autowired
78+
@Qualifier("field1")
79+
ExampleService localField;
80+
81+
@Autowired
82+
@Qualifier("field1")
83+
ExampleService localRenamed;
84+
7585
@MockitoSpyBean("field2")
7686
ExampleService nestedField;
7787

7888
@MockitoSpyBean("field2")
79-
ExampleService renamed2;
89+
ExampleService nestedRenamed;
8090

8191
@Test
8292
void fieldHasOverride(ApplicationContext ctx) {
93+
assertThat(ctx.getBean("field1"))
94+
.isInstanceOf(ExampleService.class)
95+
.satisfies(MockitoAssertions::assertIsSpy)
96+
.isSameAs(localField);
97+
98+
assertThat(localField.greeting()).isEqualTo("bean1");
99+
}
100+
101+
@Test
102+
void renamedFieldHasOverride(ApplicationContext ctx) {
103+
assertThat(ctx.getBean("field1"))
104+
.isInstanceOf(ExampleService.class)
105+
.satisfies(MockitoAssertions::assertIsSpy)
106+
.isSameAs(localRenamed);
107+
108+
assertThat(localRenamed.greeting()).isEqualTo("bean1");
109+
}
110+
111+
@Test
112+
void nestedFieldHasOverride(ApplicationContext ctx) {
83113
assertThat(ctx.getBean("field2"))
84114
.isInstanceOf(ExampleService.class)
85115
.satisfies(MockitoAssertions::assertIsSpy)
@@ -89,13 +119,13 @@ void fieldHasOverride(ApplicationContext ctx) {
89119
}
90120

91121
@Test
92-
void renamedFieldHasOverride(ApplicationContext ctx) {
122+
void nestedRenamedFieldHasOverride(ApplicationContext ctx) {
93123
assertThat(ctx.getBean("field2"))
94124
.isInstanceOf(ExampleService.class)
95125
.satisfies(MockitoAssertions::assertIsSpy)
96-
.isSameAs(renamed2);
126+
.isSameAs(nestedRenamed);
97127

98-
assertThat(renamed2.greeting()).isEqualTo("bean2");
128+
assertThat(nestedRenamed.greeting()).isEqualTo("bean2");
99129
}
100130
}
101131

0 commit comments

Comments
 (0)