Skip to content

Commit a970516

Browse files
committed
Polish GenericApplicationContextTests
1 parent 0c9def8 commit a970516

File tree

1 file changed

+54
-67
lines changed

1 file changed

+54
-67
lines changed

spring-context/src/test/java/org/springframework/context/support/GenericApplicationContextTests.java

Lines changed: 54 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.context.support;
1818

19+
import org.junit.jupiter.api.AfterEach;
1920
import org.junit.jupiter.api.Test;
2021

2122
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
@@ -24,7 +25,6 @@
2425
import org.springframework.context.ApplicationContext;
2526
import org.springframework.context.ApplicationContextAware;
2627
import org.springframework.core.metrics.jfr.FlightRecorderApplicationStartup;
27-
import org.springframework.util.ObjectUtils;
2828

2929
import static org.assertj.core.api.Assertions.assertThat;
3030
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -36,72 +36,70 @@
3636
*/
3737
class GenericApplicationContextTests {
3838

39+
private final GenericApplicationContext context = new GenericApplicationContext();
40+
41+
@AfterEach
42+
void closeContext() {
43+
context.close();
44+
}
45+
3946
@Test
4047
void getBeanForClass() {
41-
GenericApplicationContext ac = new GenericApplicationContext();
42-
ac.registerBeanDefinition("testBean", new RootBeanDefinition(String.class));
43-
ac.refresh();
48+
context.registerBeanDefinition("testBean", new RootBeanDefinition(String.class));
49+
context.refresh();
4450

45-
assertThat(ac.getBean("testBean")).isEqualTo("");
46-
assertThat(ac.getBean(String.class)).isSameAs(ac.getBean("testBean"));
47-
assertThat(ac.getBean(CharSequence.class)).isSameAs(ac.getBean("testBean"));
51+
assertThat(context.getBean("testBean")).isEqualTo("");
52+
assertThat(context.getBean(String.class)).isSameAs(context.getBean("testBean"));
53+
assertThat(context.getBean(CharSequence.class)).isSameAs(context.getBean("testBean"));
4854

49-
assertThatExceptionOfType(NoUniqueBeanDefinitionException.class).isThrownBy(() ->
50-
ac.getBean(Object.class));
51-
ac.close();
55+
assertThatExceptionOfType(NoUniqueBeanDefinitionException.class)
56+
.isThrownBy(() -> context.getBean(Object.class));
5257
}
5358

5459
@Test
5560
void withSingletonSupplier() {
56-
GenericApplicationContext ac = new GenericApplicationContext();
57-
ac.registerBeanDefinition("testBean", new RootBeanDefinition(String.class, ac::toString));
58-
ac.refresh();
59-
60-
assertThat(ac.getBean("testBean")).isSameAs(ac.getBean("testBean"));
61-
assertThat(ac.getBean(String.class)).isSameAs(ac.getBean("testBean"));
62-
assertThat(ac.getBean(CharSequence.class)).isSameAs(ac.getBean("testBean"));
63-
assertThat(ac.getBean("testBean")).isEqualTo(ac.toString());
64-
ac.close();
61+
context.registerBeanDefinition("testBean", new RootBeanDefinition(String.class, context::toString));
62+
context.refresh();
63+
64+
assertThat(context.getBean("testBean")).isSameAs(context.getBean("testBean"));
65+
assertThat(context.getBean(String.class)).isSameAs(context.getBean("testBean"));
66+
assertThat(context.getBean(CharSequence.class)).isSameAs(context.getBean("testBean"));
67+
assertThat(context.getBean("testBean")).isEqualTo(context.toString());
6568
}
6669

6770
@Test
6871
void withScopedSupplier() {
69-
GenericApplicationContext ac = new GenericApplicationContext();
70-
ac.registerBeanDefinition("testBean",
71-
new RootBeanDefinition(String.class, BeanDefinition.SCOPE_PROTOTYPE, ac::toString));
72-
ac.refresh();
73-
74-
assertThat(ac.getBean("testBean")).isNotSameAs(ac.getBean("testBean"));
75-
assertThat(ac.getBean(String.class)).isEqualTo(ac.getBean("testBean"));
76-
assertThat(ac.getBean(CharSequence.class)).isEqualTo(ac.getBean("testBean"));
77-
assertThat(ac.getBean("testBean")).isEqualTo(ac.toString());
78-
ac.close();
72+
context.registerBeanDefinition("testBean",
73+
new RootBeanDefinition(String.class, BeanDefinition.SCOPE_PROTOTYPE, context::toString));
74+
context.refresh();
75+
76+
assertThat(context.getBean("testBean")).isNotSameAs(context.getBean("testBean"));
77+
assertThat(context.getBean(String.class)).isEqualTo(context.getBean("testBean"));
78+
assertThat(context.getBean(CharSequence.class)).isEqualTo(context.getBean("testBean"));
79+
assertThat(context.getBean("testBean")).isEqualTo(context.toString());
7980
}
8081

8182
@Test
8283
void accessAfterClosing() {
83-
GenericApplicationContext ac = new GenericApplicationContext();
84-
ac.registerBeanDefinition("testBean", new RootBeanDefinition(String.class));
85-
ac.refresh();
86-
87-
assertThat(ac.getBean(String.class)).isSameAs(ac.getBean("testBean"));
88-
assertThat(ac.getAutowireCapableBeanFactory().getBean(String.class)).isSameAs(ac.getAutowireCapableBeanFactory().getBean("testBean"));
84+
context.registerBeanDefinition("testBean", new RootBeanDefinition(String.class));
85+
context.refresh();
8986

90-
ac.close();
87+
assertThat(context.getBean(String.class)).isSameAs(context.getBean("testBean"));
88+
assertThat(context.getAutowireCapableBeanFactory().getBean(String.class))
89+
.isSameAs(context.getAutowireCapableBeanFactory().getBean("testBean"));
9190

92-
assertThatIllegalStateException().isThrownBy(() ->
93-
ac.getBean(String.class));
91+
context.close();
9492

95-
assertThatIllegalStateException().isThrownBy(() -> {
96-
ac.getAutowireCapableBeanFactory().getBean("testBean");
97-
ac.getAutowireCapableBeanFactory().getBean(String.class);
98-
});
99-
ac.close();
93+
assertThatIllegalStateException()
94+
.isThrownBy(() -> context.getBean(String.class));
95+
assertThatIllegalStateException()
96+
.isThrownBy(() -> context.getAutowireCapableBeanFactory().getBean(String.class));
97+
assertThatIllegalStateException()
98+
.isThrownBy(() -> context.getAutowireCapableBeanFactory().getBean("testBean"));
10099
}
101100

102101
@Test
103102
void individualBeans() {
104-
GenericApplicationContext context = new GenericApplicationContext();
105103
context.registerBean(BeanA.class);
106104
context.registerBean(BeanB.class);
107105
context.registerBean(BeanC.class);
@@ -110,12 +108,10 @@ void individualBeans() {
110108
assertThat(context.getBean(BeanA.class).b).isSameAs(context.getBean(BeanB.class));
111109
assertThat(context.getBean(BeanA.class).c).isSameAs(context.getBean(BeanC.class));
112110
assertThat(context.getBean(BeanB.class).applicationContext).isSameAs(context);
113-
context.close();
114111
}
115112

116113
@Test
117114
void individualNamedBeans() {
118-
GenericApplicationContext context = new GenericApplicationContext();
119115
context.registerBean("a", BeanA.class);
120116
context.registerBean("b", BeanB.class);
121117
context.registerBean("c", BeanC.class);
@@ -124,12 +120,10 @@ void individualNamedBeans() {
124120
assertThat(context.getBean("a", BeanA.class).b).isSameAs(context.getBean("b"));
125121
assertThat(context.getBean("a", BeanA.class).c).isSameAs(context.getBean("c"));
126122
assertThat(context.getBean("b", BeanB.class).applicationContext).isSameAs(context);
127-
context.close();
128123
}
129124

130125
@Test
131126
void individualBeanWithSupplier() {
132-
GenericApplicationContext context = new GenericApplicationContext();
133127
context.registerBean(BeanA.class,
134128
() -> new BeanA(context.getBean(BeanB.class), context.getBean(BeanC.class)));
135129
context.registerBean(BeanB.class, BeanB::new);
@@ -141,14 +135,14 @@ void individualBeanWithSupplier() {
141135
assertThat(context.getBean(BeanA.class).c).isSameAs(context.getBean(BeanC.class));
142136
assertThat(context.getBean(BeanB.class).applicationContext).isSameAs(context);
143137

144-
assertThat(context.getDefaultListableBeanFactory().getDependentBeans(BeanB.class.getName())).isEqualTo(new String[] {BeanA.class.getName()});
145-
assertThat(context.getDefaultListableBeanFactory().getDependentBeans(BeanC.class.getName())).isEqualTo(new String[] {BeanA.class.getName()});
146-
context.close();
138+
assertThat(context.getDefaultListableBeanFactory().getDependentBeans(BeanB.class.getName()))
139+
.containsExactly(BeanA.class.getName());
140+
assertThat(context.getDefaultListableBeanFactory().getDependentBeans(BeanC.class.getName()))
141+
.containsExactly(BeanA.class.getName());
147142
}
148143

149144
@Test
150145
void individualBeanWithSupplierAndCustomizer() {
151-
GenericApplicationContext context = new GenericApplicationContext();
152146
context.registerBean(BeanA.class,
153147
() -> new BeanA(context.getBean(BeanB.class), context.getBean(BeanC.class)),
154148
bd -> bd.setLazyInit(true));
@@ -160,12 +154,10 @@ void individualBeanWithSupplierAndCustomizer() {
160154
assertThat(context.getBean(BeanA.class).b).isSameAs(context.getBean(BeanB.class));
161155
assertThat(context.getBean(BeanA.class).c).isSameAs(context.getBean(BeanC.class));
162156
assertThat(context.getBean(BeanB.class).applicationContext).isSameAs(context);
163-
context.close();
164157
}
165158

166159
@Test
167160
void individualNamedBeanWithSupplier() {
168-
GenericApplicationContext context = new GenericApplicationContext();
169161
context.registerBean("a", BeanA.class,
170162
() -> new BeanA(context.getBean(BeanB.class), context.getBean(BeanC.class)));
171163
context.registerBean("b", BeanB.class, BeanB::new);
@@ -176,12 +168,10 @@ void individualNamedBeanWithSupplier() {
176168
assertThat(context.getBean(BeanA.class).b).isSameAs(context.getBean("b", BeanB.class));
177169
assertThat(context.getBean("a", BeanA.class).c).isSameAs(context.getBean("c"));
178170
assertThat(context.getBean("b", BeanB.class).applicationContext).isSameAs(context);
179-
context.close();
180171
}
181172

182173
@Test
183174
void individualNamedBeanWithSupplierAndCustomizer() {
184-
GenericApplicationContext context = new GenericApplicationContext();
185175
context.registerBean("a", BeanA.class,
186176
() -> new BeanA(context.getBean(BeanB.class), context.getBean(BeanC.class)),
187177
bd -> bd.setLazyInit(true));
@@ -193,33 +183,30 @@ void individualNamedBeanWithSupplierAndCustomizer() {
193183
assertThat(context.getBean(BeanA.class).b).isSameAs(context.getBean("b", BeanB.class));
194184
assertThat(context.getBean("a", BeanA.class).c).isSameAs(context.getBean("c"));
195185
assertThat(context.getBean("b", BeanB.class).applicationContext).isSameAs(context);
196-
context.close();
197186
}
198187

199188
@Test
200189
void individualBeanWithNullReturningSupplier() {
201-
GenericApplicationContext context = new GenericApplicationContext();
202190
context.registerBean("a", BeanA.class, () -> null);
203191
context.registerBean("b", BeanB.class, BeanB::new);
204192
context.registerBean("c", BeanC.class, BeanC::new);
205193
context.refresh();
206194

207-
assertThat(ObjectUtils.containsElement(context.getBeanNamesForType(BeanA.class), "a")).isTrue();
208-
assertThat(ObjectUtils.containsElement(context.getBeanNamesForType(BeanB.class), "b")).isTrue();
209-
assertThat(ObjectUtils.containsElement(context.getBeanNamesForType(BeanC.class), "c")).isTrue();
210-
assertThat(context.getBeansOfType(BeanA.class).isEmpty()).isTrue();
211-
assertThat(context.getBeansOfType(BeanB.class).values().iterator().next()).isSameAs(context.getBean(BeanB.class));
212-
assertThat(context.getBeansOfType(BeanC.class).values().iterator().next()).isSameAs(context.getBean(BeanC.class));
213-
context.close();
195+
assertThat(context.getBeanNamesForType(BeanA.class)).containsExactly("a");
196+
assertThat(context.getBeanNamesForType(BeanB.class)).containsExactly("b");
197+
assertThat(context.getBeanNamesForType(BeanC.class)).containsExactly("c");
198+
assertThat(context.getBeansOfType(BeanA.class)).isEmpty();
199+
assertThat(context.getBeansOfType(BeanB.class).values().iterator().next())
200+
.isSameAs(context.getBean(BeanB.class));
201+
assertThat(context.getBeansOfType(BeanC.class).values().iterator().next())
202+
.isSameAs(context.getBean(BeanC.class));
214203
}
215204

216205
@Test
217206
void configureApplicationStartupOnBeanFactory() {
218207
FlightRecorderApplicationStartup applicationStartup = new FlightRecorderApplicationStartup();
219-
GenericApplicationContext context = new GenericApplicationContext();
220208
context.setApplicationStartup(applicationStartup);
221209
assertThat(context.getBeanFactory().getApplicationStartup()).isEqualTo(applicationStartup);
222-
context.close();
223210
}
224211

225212

0 commit comments

Comments
 (0)