Skip to content

Commit 35372e5

Browse files
committed
Simplify InstanceSupplierCodeGeneratorTests
1 parent 4b14a0b commit 35372e5

File tree

1 file changed

+42
-53
lines changed

1 file changed

+42
-53
lines changed

spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java

Lines changed: 42 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -68,18 +68,20 @@ class InstanceSupplierCodeGeneratorTests {
6868

6969
private final TestGenerationContext generationContext;
7070

71+
private final DefaultListableBeanFactory beanFactory;
72+
7173

7274
InstanceSupplierCodeGeneratorTests() {
7375
this.generationContext = new TestGenerationContext();
76+
this.beanFactory = new DefaultListableBeanFactory();
7477
}
7578

7679

7780
@Test
7881
void generateWhenHasDefaultConstructor() {
7982
BeanDefinition beanDefinition = new RootBeanDefinition(TestBean.class);
80-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
81-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
82-
TestBean bean = getBean(beanFactory, beanDefinition, instanceSupplier);
83+
compile(beanDefinition, (instanceSupplier, compiled) -> {
84+
TestBean bean = getBean(beanDefinition, instanceSupplier);
8385
assertThat(bean).isInstanceOf(TestBean.class);
8486
assertThat(compiled.getSourceFile())
8587
.contains("InstanceSupplier.using(TestBean::new)");
@@ -91,11 +93,9 @@ void generateWhenHasDefaultConstructor() {
9193
@Test
9294
void generateWhenHasConstructorWithParameter() {
9395
BeanDefinition beanDefinition = new RootBeanDefinition(InjectionComponent.class);
94-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
95-
beanFactory.registerSingleton("injected", "injected");
96-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
97-
InjectionComponent bean = getBean(beanFactory, beanDefinition,
98-
instanceSupplier);
96+
this.beanFactory.registerSingleton("injected", "injected");
97+
compile(beanDefinition, (instanceSupplier, compiled) -> {
98+
InjectionComponent bean = getBean(beanDefinition, instanceSupplier);
9999
assertThat(bean).isInstanceOf(InjectionComponent.class).extracting("bean")
100100
.isEqualTo("injected");
101101
});
@@ -107,10 +107,9 @@ void generateWhenHasConstructorWithParameter() {
107107
void generateWhenHasConstructorWithInnerClassAndDefaultConstructor() {
108108
RootBeanDefinition beanDefinition = new RootBeanDefinition(
109109
NoDependencyComponent.class);
110-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
111-
beanFactory.registerSingleton("configuration", new InnerComponentConfiguration());
112-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
113-
NoDependencyComponent bean = getBean(beanFactory, beanDefinition,
110+
this.beanFactory.registerSingleton("configuration", new InnerComponentConfiguration());
111+
compile(beanDefinition, (instanceSupplier, compiled) -> {
112+
NoDependencyComponent bean = getBean(beanDefinition,
114113
instanceSupplier);
115114
assertThat(bean).isInstanceOf(NoDependencyComponent.class);
116115
assertThat(compiled.getSourceFile()).contains(
@@ -124,11 +123,10 @@ void generateWhenHasConstructorWithInnerClassAndDefaultConstructor() {
124123
void generateWhenHasConstructorWithInnerClassAndParameter() {
125124
BeanDefinition beanDefinition = new RootBeanDefinition(
126125
EnvironmentAwareComponent.class);
127-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
128-
beanFactory.registerSingleton("configuration", new InnerComponentConfiguration());
129-
beanFactory.registerSingleton("environment", new StandardEnvironment());
130-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
131-
EnvironmentAwareComponent bean = getBean(beanFactory, beanDefinition,
126+
this.beanFactory.registerSingleton("configuration", new InnerComponentConfiguration());
127+
this.beanFactory.registerSingleton("environment", new StandardEnvironment());
128+
compile(beanDefinition, (instanceSupplier, compiled) -> {
129+
EnvironmentAwareComponent bean = getBean(beanDefinition,
132130
instanceSupplier);
133131
assertThat(bean).isInstanceOf(EnvironmentAwareComponent.class);
134132
assertThat(compiled.getSourceFile()).contains(
@@ -142,10 +140,9 @@ void generateWhenHasConstructorWithInnerClassAndParameter() {
142140
void generateWhenHasConstructorWithGeneric() {
143141
BeanDefinition beanDefinition = new RootBeanDefinition(
144142
NumberHolderFactoryBean.class);
145-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
146-
beanFactory.registerSingleton("number", 123);
147-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
148-
NumberHolder<?> bean = getBean(beanFactory, beanDefinition, instanceSupplier);
143+
this.beanFactory.registerSingleton("number", 123);
144+
compile(beanDefinition, (instanceSupplier, compiled) -> {
145+
NumberHolder<?> bean = getBean(beanDefinition, instanceSupplier);
149146
assertThat(bean).isInstanceOf(NumberHolder.class);
150147
assertThat(bean).extracting("number").isNull(); // No property actually set
151148
assertThat(compiled.getSourceFile()).contains("NumberHolderFactoryBean::new");
@@ -158,9 +155,8 @@ void generateWhenHasConstructorWithGeneric() {
158155
void generateWhenHasPrivateConstructor() {
159156
BeanDefinition beanDefinition = new RootBeanDefinition(
160157
TestBeanWithPrivateConstructor.class);
161-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
162-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
163-
TestBeanWithPrivateConstructor bean = getBean(beanFactory, beanDefinition,
158+
compile(beanDefinition, (instanceSupplier, compiled) -> {
159+
TestBeanWithPrivateConstructor bean = getBean(beanDefinition,
164160
instanceSupplier);
165161
assertThat(bean).isInstanceOf(TestBeanWithPrivateConstructor.class);
166162
assertThat(compiled.getSourceFile())
@@ -175,11 +171,10 @@ void generateWhenHasFactoryMethodWithNoArg() {
175171
BeanDefinition beanDefinition = BeanDefinitionBuilder
176172
.rootBeanDefinition(String.class)
177173
.setFactoryMethodOnBean("stringBean", "config").getBeanDefinition();
178-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
179-
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
174+
this.beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
180175
.genericBeanDefinition(SimpleConfiguration.class).getBeanDefinition());
181-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
182-
String bean = getBean(beanFactory, beanDefinition, instanceSupplier);
176+
compile(beanDefinition, (instanceSupplier, compiled) -> {
177+
String bean = getBean(beanDefinition, instanceSupplier);
183178
assertThat(bean).isInstanceOf(String.class);
184179
assertThat(bean).isEqualTo("Hello");
185180
assertThat(compiled.getSourceFile()).contains(
@@ -195,11 +190,10 @@ void generateWhenHasPrivateStaticFactoryMethodWithNoArg() {
195190
.rootBeanDefinition(String.class)
196191
.setFactoryMethodOnBean("privateStaticStringBean", "config")
197192
.getBeanDefinition();
198-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
199-
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
193+
this.beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
200194
.genericBeanDefinition(SimpleConfiguration.class).getBeanDefinition());
201-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
202-
String bean = getBean(beanFactory, beanDefinition, instanceSupplier);
195+
compile(beanDefinition, (instanceSupplier, compiled) -> {
196+
String bean = getBean(beanDefinition, instanceSupplier);
203197
assertThat(bean).isInstanceOf(String.class);
204198
assertThat(bean).isEqualTo("Hello");
205199
assertThat(compiled.getSourceFile())
@@ -215,11 +209,10 @@ void generateWhenHasStaticFactoryMethodWithNoArg() {
215209
BeanDefinition beanDefinition = BeanDefinitionBuilder
216210
.rootBeanDefinition(Integer.class)
217211
.setFactoryMethodOnBean("integerBean", "config").getBeanDefinition();
218-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
219-
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
212+
this.beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
220213
.genericBeanDefinition(SimpleConfiguration.class).getBeanDefinition());
221-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
222-
Integer bean = getBean(beanFactory, beanDefinition, instanceSupplier);
214+
compile(beanDefinition, (instanceSupplier, compiled) -> {
215+
Integer bean = getBean(beanDefinition, instanceSupplier);
223216
assertThat(bean).isInstanceOf(Integer.class);
224217
assertThat(bean).isEqualTo(42);
225218
assertThat(compiled.getSourceFile())
@@ -236,13 +229,12 @@ void generateWhenHasStaticFactoryMethodWithArg() {
236229
.setFactoryMethodOnBean("create", "config").getBeanDefinition();
237230
beanDefinition.setResolvedFactoryMethod(ReflectionUtils
238231
.findMethod(SampleFactory.class, "create", Number.class, String.class));
239-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
240-
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
232+
this.beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
241233
.genericBeanDefinition(SampleFactory.class).getBeanDefinition());
242-
beanFactory.registerSingleton("number", 42);
243-
beanFactory.registerSingleton("string", "test");
244-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
245-
String bean = getBean(beanFactory, beanDefinition, instanceSupplier);
234+
this.beanFactory.registerSingleton("number", 42);
235+
this.beanFactory.registerSingleton("string", "test");
236+
compile(beanDefinition, (instanceSupplier, compiled) -> {
237+
String bean = getBean(beanDefinition, instanceSupplier);
246238
assertThat(bean).isInstanceOf(String.class);
247239
assertThat(bean).isEqualTo("42test");
248240
assertThat(compiled.getSourceFile()).contains("SampleFactory.create(");
@@ -257,11 +249,10 @@ void generateWhenHasStaticFactoryMethodCheckedException() {
257249
.rootBeanDefinition(Integer.class)
258250
.setFactoryMethodOnBean("throwingIntegerBean", "config")
259251
.getBeanDefinition();
260-
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
261-
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
252+
this.beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
262253
.genericBeanDefinition(SimpleConfiguration.class).getBeanDefinition());
263-
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
264-
Integer bean = getBean(beanFactory, beanDefinition, instanceSupplier);
254+
compile(beanDefinition, (instanceSupplier, compiled) -> {
255+
Integer bean = getBean(beanDefinition, instanceSupplier);
265256
assertThat(bean).isInstanceOf(Integer.class);
266257
assertThat(bean).isEqualTo(42);
267258
assertThat(compiled.getSourceFile()).doesNotContain(") throws Exception {");
@@ -287,17 +278,15 @@ private ThrowingConsumer<ExecutableHint> hasMode(ExecutableMode mode) {
287278
}
288279

289280
@SuppressWarnings("unchecked")
290-
private <T> T getBean(DefaultListableBeanFactory beanFactory,
291-
BeanDefinition beanDefinition, InstanceSupplier<?> instanceSupplier) {
281+
private <T> T getBean(BeanDefinition beanDefinition, InstanceSupplier<?> instanceSupplier) {
292282
((RootBeanDefinition) beanDefinition).setInstanceSupplier(instanceSupplier);
293-
beanFactory.registerBeanDefinition("testBean", beanDefinition);
294-
return (T) beanFactory.getBean("testBean");
283+
this.beanFactory.registerBeanDefinition("testBean", beanDefinition);
284+
return (T) this.beanFactory.getBean("testBean");
295285
}
296286

297-
private void compile(DefaultListableBeanFactory beanFactory, BeanDefinition beanDefinition,
298-
BiConsumer<InstanceSupplier<?>, Compiled> result) {
287+
private void compile(BeanDefinition beanDefinition, BiConsumer<InstanceSupplier<?>, Compiled> result) {
299288

300-
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory(beanFactory);
289+
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory(this.beanFactory);
301290
freshBeanFactory.registerBeanDefinition("testBean", beanDefinition);
302291
RegisteredBean registeredBean = RegisteredBean.of(freshBeanFactory, "testBean");
303292
DeferredTypeBuilder typeBuilder = new DeferredTypeBuilder();

0 commit comments

Comments
 (0)