如何在 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})