【问题标题】:Disable Consul for integration tests with SB 2.4禁用 Consul 进行 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-.yml 文件中被覆盖,因为它是附加的(它是一个特殊属性)。还不确定如何解决您的情况,准备与 Spring Boot 工程师聊天。
  • 您有其他环境的其他配置文件吗?

标签: spring spring-boot spring-cloud consul


【解决方案1】:

根据问题上的 cmets,这可能只是一种解决方法,但目前对我有用。您的里程可能会有所不同。

将 spring.config.import 属性指定为环境变量允许它不为测试设置,而是为应用程序的部署点工作。

我的完整设置。

  • application.yml 包含正常的 consul 启用配置。
  • application-standalone.yml 只是禁用除spring.config.import 之外的所有属性
  • spring.config.import 仅添加到启动参数中。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2016-06-12
    • 2017-01-30
    • 2013-04-07
    • 2019-12-17
    • 2015-12-28
    • 2020-05-26
    • 2018-01-02
    相关资源
    最近更新 更多