Polish tests

This commit is contained in:
Stephane Nicoll 2022-06-07 12:03:50 +02:00
parent ad0573a91e
commit 92961d75f0
2 changed files with 22 additions and 34 deletions

View File

@ -103,8 +103,8 @@ class ScopedProxyBeanRegistrationAotProcessorTests {
this.beanFactory.registerBeanDefinition("test", beanDefinition); this.beanFactory.registerBeanDefinition("test", beanDefinition);
testCompile((freshBeanFactory, testCompile((freshBeanFactory,
compiled) -> assertThatExceptionOfType(BeanCreationException.class) compiled) -> assertThatExceptionOfType(BeanCreationException.class)
.isThrownBy(() -> freshBeanFactory.getBean("test")) .isThrownBy(() -> freshBeanFactory.getBean("test"))
.withMessageContaining("'targetBeanName' is required")); .withMessageContaining("'targetBeanName' is required"));
} }
@Test @Test
@ -116,8 +116,8 @@ class ScopedProxyBeanRegistrationAotProcessorTests {
this.beanFactory.registerBeanDefinition("test", beanDefinition); this.beanFactory.registerBeanDefinition("test", beanDefinition);
testCompile((freshBeanFactory, testCompile((freshBeanFactory,
compiled) -> assertThatExceptionOfType(BeanCreationException.class) compiled) -> assertThatExceptionOfType(BeanCreationException.class)
.isThrownBy(() -> freshBeanFactory.getBean("test")) .isThrownBy(() -> freshBeanFactory.getBean("test"))
.withMessageContaining("No bean named 'testDoesNotExist'")); .withMessageContaining("No bean named 'testDoesNotExist'"));
} }
@Test @Test
@ -144,19 +144,18 @@ class ScopedProxyBeanRegistrationAotProcessorTests {
assertThat(contribution).isNotNull(); assertThat(contribution).isNotNull();
contribution.applyTo(this.generationContext, this.beanFactoryInitializationCode); contribution.applyTo(this.generationContext, this.beanFactoryInitializationCode);
this.generationContext.writeGeneratedContent(); this.generationContext.writeGeneratedContent();
TestCompiler.forSystem().withFiles(this.generatedFiles).printFiles(System.out) TestCompiler.forSystem().withFiles(this.generatedFiles).compile(compiled -> {
.compile(compiled -> { MethodReference reference = this.beanFactoryInitializationCode
MethodReference reference = this.beanFactoryInitializationCode .getInitializers().get(0);
.getInitializers().get(0); Object instance = compiled.getInstance(Object.class,
Object instance = compiled.getInstance(Object.class, reference.getDeclaringClass().toString());
reference.getDeclaringClass().toString()); Method method = ReflectionUtils.findMethod(instance.getClass(),
Method method = ReflectionUtils.findMethod(instance.getClass(), reference.getMethodName(), DefaultListableBeanFactory.class);
reference.getMethodName(), DefaultListableBeanFactory.class); DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory();
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory(); freshBeanFactory.setBeanClassLoader(compiled.getClassLoader());
freshBeanFactory.setBeanClassLoader(compiled.getClassLoader()); ReflectionUtils.invokeMethod(method, instance, freshBeanFactory);
ReflectionUtils.invokeMethod(method, instance, freshBeanFactory); result.accept(freshBeanFactory, compiled);
result.accept(freshBeanFactory, compiled); });
});
} }

View File

@ -72,8 +72,6 @@ class BeanDefinitionMethodGeneratorTests {
private DefaultListableBeanFactory beanFactory; private DefaultListableBeanFactory beanFactory;
private MockSpringFactoriesLoader springFactoriesLoader;
private MockBeanRegistrationsCode beanRegistrationsCode; private MockBeanRegistrationsCode beanRegistrationsCode;
private BeanDefinitionMethodGeneratorFactory methodGeneratorFactory; private BeanDefinitionMethodGeneratorFactory methodGeneratorFactory;
@ -83,9 +81,8 @@ class BeanDefinitionMethodGeneratorTests {
this.generatedFiles = new InMemoryGeneratedFiles(); this.generatedFiles = new InMemoryGeneratedFiles();
this.generationContext = new DefaultGenerationContext(this.generatedFiles); this.generationContext = new DefaultGenerationContext(this.generatedFiles);
this.beanFactory = new DefaultListableBeanFactory(); this.beanFactory = new DefaultListableBeanFactory();
this.springFactoriesLoader = new MockSpringFactoriesLoader();
this.methodGeneratorFactory = new BeanDefinitionMethodGeneratorFactory( this.methodGeneratorFactory = new BeanDefinitionMethodGeneratorFactory(
new AotFactoriesLoader(this.beanFactory, this.springFactoriesLoader)); new AotFactoriesLoader(this.beanFactory, new MockSpringFactoriesLoader()));
this.beanRegistrationsCode = new MockBeanRegistrationsCode( this.beanRegistrationsCode = new MockBeanRegistrationsCode(
ClassName.get("__", "Registration")); ClassName.get("__", "Registration"));
} }
@ -142,7 +139,7 @@ class BeanDefinitionMethodGeneratorTests {
.returns(TestBean.class).addCode("return new $T($S);", .returns(TestBean.class).addCode("return new $T($S);",
TestBean.class, "postprocessed")); TestBean.class, "postprocessed"));
beanRegistrationCode.addInstancePostProcessor(MethodReference.ofStatic( beanRegistrationCode.addInstancePostProcessor(MethodReference.ofStatic(
beanRegistrationCode.getClassName(), method.getName().toString())); beanRegistrationCode.getClassName(), method.getName()));
}; };
List<BeanRegistrationAotContribution> aotContributions = Collections List<BeanRegistrationAotContribution> aotContributions = Collections
.singletonList(aotContribution); .singletonList(aotContribution);
@ -354,7 +351,7 @@ class BeanDefinitionMethodGeneratorTests {
Collections.emptyList()); Collections.emptyList());
MethodReference method = generator.generateBeanDefinitionMethod( MethodReference method = generator.generateBeanDefinitionMethod(
this.generationContext, "", this.beanRegistrationsCode); this.generationContext, "", this.beanRegistrationsCode);
testCompiledResult(method, false, (actual, compiled) -> { testCompiledResult(method, (actual, compiled) -> {
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory(); DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory();
freshBeanFactory.registerBeanDefinition("test", actual); freshBeanFactory.registerBeanDefinition("test", actual);
Object bean = freshBeanFactory.getBean("test"); Object bean = freshBeanFactory.getBean("test");
@ -367,23 +364,15 @@ class BeanDefinitionMethodGeneratorTests {
private RegisteredBean registerBean(RootBeanDefinition beanDefinition) { private RegisteredBean registerBean(RootBeanDefinition beanDefinition) {
String beanName = "testBean"; String beanName = "testBean";
this.beanFactory.registerBeanDefinition(beanName, beanDefinition); this.beanFactory.registerBeanDefinition(beanName, beanDefinition);
RegisteredBean registeredBean = RegisteredBean.of(this.beanFactory, beanName); return RegisteredBean.of(this.beanFactory, beanName);
return registeredBean;
} }
@SuppressWarnings("unchecked")
private void testCompiledResult(MethodReference method, private void testCompiledResult(MethodReference method,
BiConsumer<RootBeanDefinition, Compiled> result) { BiConsumer<RootBeanDefinition, Compiled> result) {
testCompiledResult(method, false, result);
}
@SuppressWarnings("unchecked")
private void testCompiledResult(MethodReference method, boolean targetClassAccess,
BiConsumer<RootBeanDefinition, Compiled> result) {
this.generationContext.writeGeneratedContent(); this.generationContext.writeGeneratedContent();
JavaFile javaFile = generateJavaFile(method); JavaFile javaFile = generateJavaFile(method);
TestCompiler.forSystem().withFiles(this.generatedFiles).printFiles(System.out) TestCompiler.forSystem().withFiles(this.generatedFiles).compile(
.compile(javaFile::writeTo, compiled -> result.accept( javaFile::writeTo, compiled -> result.accept(
(RootBeanDefinition) compiled.getInstance(Supplier.class).get(), (RootBeanDefinition) compiled.getInstance(Supplier.class).get(),
compiled)); compiled));
} }