【发布时间】:2021-07-28 20:28:02
【问题描述】:
我一直在拼命地尝试构建一个需要来自 JUnit5 扩展模型和 Spring-Boot 测试框架的信息的扩展。具体来说,我想使用 ApplicationContextInitializer 和自定义注释来挂钩 ApplicationContext 创建过程:
@Retention(RUNTIME)
@Target(TYPE)
@ContextConfiguration(initializers = CustomContextInitializer.class)
public @interface CustomAnnotation {
String someOption();
}
然后测试看起来像这样:
@SpringBootTest
@CustomAnnotation(someOption = "Hello There")
public class SomeTest {
...
}
现在,如何从我的CustomContextInitializer 中访问测试类的CustomAnnotation 实例?
class CustomContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
// How to access the Test Class here?
CustomAnnotation annotation = <Test Class>.getAnnotation(CustomAnnotation.class);
System.out.println(annotation.someOption());
}
}
是否有可能在创建 ApplicationContext 期间以某种方式访问 JUnit5 ExtensionContext?它不必来自ApplicationContextInitializer。我只需要一个足够早执行的钩子,这样我就可以在整个 bean 实例化过程实际开始之前注入一些动态生成的属性。
【问题讨论】:
标签: java junit5 spring-test spring-boot-test