【问题标题】:Spring boot test configuration not override normal configuration wellSpring Boot 测试配置不能很好地覆盖正常配置
【发布时间】:2017-12-13 03:04:06
【问题描述】:

我有一个 Spring Boot 应用程序,配置如下:

src/main/resources/application.yml:

eureka:
  client:
    serviceUrl:
      defaultZone: http://10.254.102.12:1111/eureka/

在我的单元测试用例中,我想设置 eureka 实例名称并更改日志记录级别。 src/test/resources/application.yml:

eureka:
  instance:
    appname: item-client-test

logging:
  level: debug

但是当我添加这些附加设置时,那些以前的设置似乎不再起作用了。 eureka serviceUrl 回退到默认的 loclahost:8761,所以我的测试失败了。当我将自定义 eureka serviceUrl 添加到 src/test/resources/application.yml 时,我的测试很顺利。

所以我很困惑这是 Spring Boot 的错误还是我没有使用正确的方式进行配置?

【问题讨论】:

  • AFAIK,spring boot 不会合并它们。它使用最具体的一种,即测试一种。
  • 它会合并属性文件吗?
  • 不,无论类型如何都不会合并

标签: spring-boot spring-cloud netflix-eureka


【解决方案1】:

您可以尝试使用两个配置文件,例如:

src/main/resources/application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://10.254.102.12:1111/eureka/

src/main/resources/application-test.yml

eureka:
  instance:
    appname: item-client-test
  client:
    serviceUrl:
      defaultZone: http://test-server/eureka/
logging:
  level: debug

并使用SPRING_PROFILES_ACTIVE=test mvn test 运行您的测试

Spring Boot 会查找 application-#{environment} 配置文件(可以这么说)并使用它,继承自默认的 (application.yml) 配置文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2018-05-06
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多