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

7d7tgy0s  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(57)

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

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

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

@SpringBootTest
@ContextConfiguration(classes = [Application::class, MyConfig::class])
class ApplicationTest


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

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


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

pxy2qtax

pxy2qtax1#

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

@SpringBootTest
@ActiveProfiles("test")
class ApplicationTest {
    // your integration test
}

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

@Configuration
@Profile("test")
public class MyConfig {
    @Bean(name = "nameOfTheExternalBean")
    @Primary
    public YourBean yourBean() {
        
    }
}

相关问题