spring 在ApplicationTest中集成测试的应用程序中使用@Configuration组件

7d7tgy0s  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(156)

我正在尝试实现我的集成测试。我的应用程序实现如下:

  1. @SpringBootApplication
  2. @ComponentScan(basePackages = ["com.lib"])
  3. class Application

字符串
在com.lib中,有一个@Configuration类调用SystemConfig,它有一个标记为@Primary的@Bean,我想用MyConfig类覆盖它,所以我实现了我的ApplicationTest,如下所示:

  1. @SpringBootTest
  2. @ContextConfiguration(classes = [Application::class, MyConfig::class])
  3. class ApplicationTest


我一直在尝试使用所有的方式这个链接建议https://www.baeldung.com/spring-boot-exclude-auto-configuration-test例如添加

  1. @EnableAutoConfiguration(exclude=SystemConfig.class)
  2. @SpringBootTest
  3. @ContextConfiguration(classes = [Application::class, MyConfig::class])
  4. class ApplicationTest


如果我在MyConfig中将@Bean标记为@Primary,那么它将有多个@Primary bean。
考虑使用@Profile,但SystemConfig来自外部库,所以我不能修改它。

pxy2qtax

pxy2qtax1#

我认为使用@Profile是一个很好的选择,即使使用第三方库也可以使用配置文件解决这个问题。
试试这个:

  1. @SpringBootTest
  2. @ActiveProfiles("test")
  3. class ApplicationTest {
  4. // your integration test
  5. }

字符串
为测试创建自定义配置

  1. @Configuration
  2. @Profile("test")
  3. public class MyConfig {
  4. @Bean(name = "nameOfTheExternalBean")
  5. @Primary
  6. public YourBean yourBean() {
  7. }
  8. }

展开查看全部

相关问题