[英]How to enable eager singleton initialization for tests in Micronaut?
我有一個案例,我有一個帶有@Factory
注釋的 class ,它創建了一個 bean 並調用了一些代碼。 我已經啟用了 Eager singleton 初始化,並且調用了 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
}
}
因此,在執行測試時,即使啟用了eagerInitSingletons
,也不會調用來自Config
class 的response
方法,並且在應用程序正常啟動時它會起作用。
問題是:如何為 micronaut 測試啟用 Eager singleton 初始化?
您可以嘗試使用自定義上下文構建器嗎?
YourTest Class
@MicronautTest(contextBuilder = CustomContextBuilder.class)
您的 CustomContextBuilder:
public class CustomContextBuilder extends DefaultApplicationContextBuilder {
public CustomContextBuilder() {
eagerInitSingletons(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.