【发布时间】:2022-01-20 14:49:29
【问题描述】:
我想使用@WebFluxTest 注解为响应式控制器编写测试,模拟所有依赖项。
@WebFluxTest(controllers = MyController.class)
public class MyControllerTest {
@MockBean
SomeService service;
@Autowired
WebTestClient webClient;
//some tests
}
据我了解,WebFluxTest 注释应仅适用于与 WebFlux 测试相关的配置(即@Controller、@ControllerAdvice 等),而不适用于其他 bean。
我的 Spring Boot 应用程序包含许多 @Configuration 类,这些类配置了许多 bean(注释为 @Bean)。其中一些配置也有依赖关系(由构造函数自动装配)。
@Configuration
@RequiredArgsConstructor
public class MyConfig {
private final AnotherConfig anotherConfig;
@Bean
//...
}
当我运行我的 Web Flux 测试时,我可以看到上下文初始化包含初始化 MyConfig 的尝试(由于缺少来自第 3 方自动配置库的依赖项而失败)。如何配置测试以跳过所有这些的初始化?
我只能通过排除整个应用程序的自动配置来排除有问题的配置类。
@WebFluxTest(controllers = MyController.class, excludeAutoConfiguration = {MyApplication.class})
public class MyControllerTest { ... }
MyApplication 是自动扫描这些配置类的 Spring Boot 应用程序。
但是我怎样才能实现只跳过MyConfig 的初始化?或者更好的是,我怎样才能实现只包含要初始化的配置列表?
【问题讨论】:
-
不应该,当它这样做时,通常是由于那些被导入或
@SpringBootApplication注释类上有额外的配置。无论哪种情况,测试都无法排除这些类。
标签: spring-boot junit spring-webflux