如何解决如何在 Micronaut 中为测试启用渴望的单例初始化?
我有一个例子,我有一个 @Factory
带注释的类,它创建一个 bean 并调用一些代码。我已经启用了急切的单例初始化和
即使在应用程序启动时没有在任何地方使用 bean 工厂方法,它也会被调用。但是对于测试,急切的初始化不起作用并且不会创建 bean :
申请:
public class Application {
public static void main(String[] args) {
Micronaut.build(args)
.eagerInitSingletons(true)
.mainClass(Application.class)
.start();
}
}
配置
@Factory
public class Config {
@Singleton
@Bean
public Response response() {
System.out.println("Invoked");
//invoking some code
return new Response("test");
}
}
和测试:
@MicronautTest(application = Application.class)
class ApplicationSpec extends Specification {
@Inject
EmbeddedApplication<?> application
void 'test it works'() {
expect:
application.running
}
}
因此,在执行测试时,即使启用了 response
并且在应用程序正常启动时也不会调用 Config
类中的 eagerInitSingletons
方法。
问题是:如何为 micronaut 测试启用急切的单例初始化?
解决方法
您可以尝试使用自定义上下文构建器吗?
你的测试类
@MicronautTest(contextBuilder = CustomContextBuilder.class)
您的 CustomContextBuilder:
public class CustomContextBuilder extends DefaultApplicationContextBuilder {
public CustomContextBuilder() {
eagerInitSingletons(true);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。