如何在 WebFluxTest 中禁用 @Configuration 初始化?
How to disable @Configuration initialization in WebFluxTest?
我想使用 @WebFluxTest
注释为反应式控制器编写测试,模拟所有依赖项。
@WebFluxTest(controllers = MyController.class)
public class MyControllerTest {
@MockBean
SomeService service;
@Autowired
WebTestClient webClient;
//some tests
}
据我了解,WebFluxTest
注释应仅应用与 WebFlux 测试相关的配置(即 @Controller
、@ControllerAdvice
等),而不是其他 bean。
我的 spring 引导应用程序包含许多 @Configuration
class es,它们配置了许多 beans(注释为 @Bean
)。其中一些配置也具有依赖性(由构造函数自动装配)。
@Configuration
@RequiredArgsConstructor
public class MyConfig {
private final AnotherConfig anotherConfig;
@Bean
//...
}
当我 运行 我的网络通量测试时,我可以看到上下文初始化包含尝试初始化 MyConfig
(并且由于缺少来自第 3 方自动-配置的库)。我如何配置测试以跳过所有这些的初始化?
我只能通过排除整个应用程序的自动配置来排除有问题的配置class。
@WebFluxTest(controllers = MyController.class, excludeAutoConfiguration = {MyApplication.class})
public class MyControllerTest { ... }
其中 MyApplication
是 spring 启动应用程序自动扫描那些配置 classes.
但是如何实现只跳过MyConfig
的初始化呢?或者更好的是,我怎样才能只包含要初始化的配置列表?
添加
@ActiveProfiles("YOUR_ENV_OTHER_THAN_TEST")
低于或高于@Configuration
对于多个环境..
@ActiveProfiles(profiles ={env1, env2,env3})
我想使用 @WebFluxTest
注释为反应式控制器编写测试,模拟所有依赖项。
@WebFluxTest(controllers = MyController.class)
public class MyControllerTest {
@MockBean
SomeService service;
@Autowired
WebTestClient webClient;
//some tests
}
据我了解,WebFluxTest
注释应仅应用与 WebFlux 测试相关的配置(即 @Controller
、@ControllerAdvice
等),而不是其他 bean。
我的 spring 引导应用程序包含许多 @Configuration
class es,它们配置了许多 beans(注释为 @Bean
)。其中一些配置也具有依赖性(由构造函数自动装配)。
@Configuration
@RequiredArgsConstructor
public class MyConfig {
private final AnotherConfig anotherConfig;
@Bean
//...
}
当我 运行 我的网络通量测试时,我可以看到上下文初始化包含尝试初始化 MyConfig
(并且由于缺少来自第 3 方自动-配置的库)。我如何配置测试以跳过所有这些的初始化?
我只能通过排除整个应用程序的自动配置来排除有问题的配置class。
@WebFluxTest(controllers = MyController.class, excludeAutoConfiguration = {MyApplication.class})
public class MyControllerTest { ... }
其中 MyApplication
是 spring 启动应用程序自动扫描那些配置 classes.
但是如何实现只跳过MyConfig
的初始化呢?或者更好的是,我怎样才能只包含要初始化的配置列表?
添加
@ActiveProfiles("YOUR_ENV_OTHER_THAN_TEST")
低于或高于@Configuration
对于多个环境..
@ActiveProfiles(profiles ={env1, env2,env3})