你可以禁用通过
@TestPropertySource(properties = {"spring.cloud.consul.config.enabled=false"})
如果你有 bootstrap.properties 您应该创建项目中的文件 bootstrap.properties 文件下 test/resources :
bootstrap.properties
test/resources
spring.application.name=<service-name> spring.cloud.bus.enabled=false spring.cloud.discovery.enabled=false spring.cloud.consul.enabled=false spring.cloud.consul.config.enabled=false
这将禁用测试中的consul集成
配置文件注释是正确的
@Profile ("!" + Profiles.UNIT_TEST)
配置文件激活看起来也不错
@ActiveProfiles (Profiles.UNIT_TEST)
您写道您正在使用ComponentScan,这很重要,因为如果bean由@Bean注释方法实例化,则忽略bean上的@Profile注释。可能是你再次检查,看,这不会发生?
要缩小问题范围,您可以尝试:
在ServiceDiscoveryConfiguration的构造函数中设置断点,以查看它是否已实例化
删除@EnableDiscoveryClient以查看这是否真的是导致问题的原因
在test / resources下的application.properties文件中添加以下属性
spring.cloud.discovery.enabled=false spring.cloud.consul.enabled=false spring.cloud.consul.config.enabled=false
这将在测试应用程序时禁用consul集成
问题是,如果你在类路径中有spring-consul,它会尝试自动配置它