From 008de18c34e55a21f6ad92742e1c6b063a7d19ab Mon Sep 17 00:00:00 2001 From: Dmytro Nosan Date: Mon, 28 Oct 2024 11:43:16 +0200 Subject: [PATCH] Use ReflectionTestUtils for invoking @DynamicPropertySource methods --- .../context/DynamicPropertySourceMethodsImporter.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/context/DynamicPropertySourceMethodsImporter.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/context/DynamicPropertySourceMethodsImporter.java index 55b655212b35..d11ba194571f 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/context/DynamicPropertySourceMethodsImporter.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/context/DynamicPropertySourceMethodsImporter.java @@ -46,6 +46,7 @@ import org.springframework.javapoet.CodeBlock; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; @@ -201,7 +202,6 @@ private static GeneratedMethod generateMethod(GenerationContext generationContex code.addModifiers(javax.lang.model.element.Modifier.PRIVATE, javax.lang.model.element.Modifier.STATIC); code.addParameter(DynamicPropertyRegistry.class, DYNAMIC_PROPERTY_REGISTRY); - if (isMethodAccessible(generatedClass, method)) { code.addStatement(CodeBlock.of("$T.$L($L)", method.getDeclaringClass(), method.getName(), DYNAMIC_PROPERTY_REGISTRY)); @@ -211,12 +211,9 @@ private static GeneratedMethod generateMethod(GenerationContext generationContex code.beginControlFlow("try"); code.addStatement("$T clazz = $T.forName($S, $T.class.getClassLoader())", Class.class, ClassUtils.class, ClassName.get(method.getDeclaringClass()), generatedClass.getName()); - code.addStatement("$T method = $T.findMethod(clazz, $S, $T.class)", Method.class, - ReflectionUtils.class, method.getName(), DynamicPropertyRegistry.class); - code.addStatement("$T.notNull(method, $S)", Assert.class, - "Method '" + method.getName() + "' is not found"); - code.addStatement("$T.makeAccessible(method)", ReflectionUtils.class); - code.addStatement("$T.invokeMethod(method, null, $L)", ReflectionUtils.class, + // ReflectionTestUtils can be used here because + // @DynamicPropertyRegistry in a test module. + code.addStatement("$T.invokeMethod(clazz, $S, $L)", ReflectionTestUtils.class, method.getName(), DYNAMIC_PROPERTY_REGISTRY); code.nextControlFlow("catch ($T ex)", ClassNotFoundException.class); code.addStatement("throw new $T(ex)", RuntimeException.class);