gpt4 book ai didi

spring-boot - 无法在测试期间阻止 couchbase 自动配置

转载 作者:行者123 更新时间:2023-12-05 09:34:50 25 4
gpt4 key购买 nike

我试图阻止应用程序在运行单元测试时尝试连接到数据库。以下是我所做的。

@SpringBootApplication(exclude = {
CouchbaseDataAutoConfiguration.class,
CouchbaseAutoConfiguration.class,
})
@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {
ApplicationStartup.class, MessageApplication.class }))
public class MessageApplicationTests {

public static void main(String[] args) {
SpringApplication.run(MessageApplicationTests.class, args);
}

}

@ActiveProfiles("test")
@SpringBootTest(classes = MessageApplicationTests.class)
class TestClass {

@Autowired
Serviceclass serviceclass;


@Test
void testMethod() {


}
}


除此之外,我在 application-test.yml 中添加了以下内容

spring:
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration
- org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration
- org.springframework.cloud.aws.autoconfigure.messaging.MessagingAutoConfiguration

两者都无济于事。有人可以帮助我了解这里出了什么问题吗?

最佳答案

同时排除您的 Config 类(扩展 AbstractCouchbaseConfig 的类)但是,如果您有任何对存储库的引用,例如通过 Autowire 或作为 @Service 构造函数的参数,应用程序将无法启动。当我尝试时,自动配置类的排除似乎并不重要。

@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {ApplicationStartup.class, MessageApplication.class, Config.class}))


可能与您的问题无关,但我发现对于多个 @SpringBootApplication 类(您有 MessageApplication 和 MessageApplicationTests,对吧?),Spring 会为它们两者 遍历自动配置类,不仅仅是
SpringApplication.run(MessageApplicationTests.class, args) ) 所以需要在两个类上都使用 @SpringBootApplication excludes 来完全排除它们(尽管我发现排除并没有改变任何东西)。

关于spring-boot - 无法在测试期间阻止 couchbase 自动配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66237557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com