禁用 Consul 进行 SB 2.4 的集成测试
Posted
技术标签:
【中文标题】禁用 Consul 进行 SB 2.4 的集成测试【英文标题】:Disable Consul for integration tests with SB 2.4 【发布时间】:2021-06-07 13:27:22 【问题描述】:由于SB 2.4
中的新SB 配置属性spring.config.import
,我无法进行集成测试。以前,我有bootstrap-test.yml
和spring.cloud.consul.enabled: false
,效果很好。自从升级到2.4.3
,我在application yml
中有spring.config.import: "consul:"
,并且在application-test.yml 文件中似乎没有禁用它。我已经尝试了覆盖spring.config.import: "optional:consul:"
和在application-test.yml
中设置spring.cloud.consul.enabled: false
的所有可能组合。但是我仍然遇到同样的错误
Config data resource ... via location 'consul:' does not exist
我不想在 application.yml 中使用可选导入,因为 main 不应该在没有它的情况下启动。唯一似乎有帮助的是设置use-legacy-processing: true
,但我不明白为什么。
【问题讨论】:
设置spring.cloud.consul.enabled=false
应该可以工作。可以分享一下你的配置吗? github.com/spring-cloud/spring-cloud-consul/blob/master/… 我想知道是否尝试将其设置在配置文件中为时已晚。可以尝试在@SpringBootTest
中设置吗?
当然,当我在@SpringBootTest
上设置它时,给定spring.config.import=consul:
我得到Unable to load config data from 'consul:', File extension is not known to any PropertySourceLoader. If the location is meant to reference a directory, it must end in '/'
好的,感谢您提供的信息。可能是一个错误
越想越没bug。 spring.config.import
不能在 application-根据问题上的 cmets,这可能只是一种解决方法,但目前对我有用。您的里程可能会有所不同。
将 spring.config.import 属性指定为环境变量允许它不为测试设置,而是为应用程序的部署点工作。
我的完整设置。
application.yml
包含正常的 consul 启用配置。
application-standalone.yml
只是禁用除spring.config.import
之外的所有属性
spring.config.import 仅添加到启动参数中。
【讨论】:
以上是关于禁用 Consul 进行 SB 2.4 的集成测试的主要内容,如果未能解决你的问题,请参考以下文章
Centos7.5 Prometheus2.5配置和基于Consul1.2.4的服务发现