Spring 启动测试配置不能很好地覆盖正常配置

Spring boot test configuration not override normal configuration well

我有一个 spring 启动应用程序,其配置如下:

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 引导的错误还是我没有使用正确的配置方式?

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

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 引导将查找 application-#{environment} 配置文件(可以这么说)并使用它,继承自默认 (application.yml) 配置文件