【问题标题】:SpringBootTest: how to use application-test.yaml and inherit missing values from application.yamlSpringBootTest:如何使用 application-test.yaml 并从 application.yaml 继承缺失值
【发布时间】:2020-02-21 20:11:24
【问题描述】:

我正在尝试使用注释运行集成测试:

@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @ActiveProfiles({ "test" }).

我遇到的问题是应用程序通过使用弹簧配置文件“测试”加载 我有两个配置文件: 应用程序.yaml 应用程序-test.yaml

application.yaml 包含:

xyz:
  list:
  - class-name: com.any.prod.ClassName1
    jndi-name: com/ws/ClassName1
  - class-name: com.any.prod.ClassName2
    jndi-name: com/ws/ClassName2

而另一个文件不包含这些值。 这些估值器由我使用的库使用,而不是由我的应用程序直接使用。

当我加载启用了“测试”配置文件的测试时,application.yaml 中的值不会被拾取。如果我向 application-test.yaml 添加相同的值,它们会在绑定过程中被拾取。

这些是拾取的属性:

xyz.list[0].class-name: com.any.prod.ClassName1 (loaded from application-test.yaml)
xyz.list[0].jndi-name: com/ws/ClassName1 (loaded from application-test.yaml)
xyz.list[1].class-name: com.any.prod.ClassName2 (loaded from application-test.yaml)
xyz.list[1].jndi-name: com/ws/ClassName2 (loaded from application-test.yaml)
xyz.list (loaded from application.yaml)

不幸的是,最后一个条目使属性验证失败。 有谁知道我能做些什么来解开这个谜团? 在这一点上,我对配置 yaml 文件的错误的理解(至少对于测试用例 - 当我们部署我们的应用程序时,继承似乎工作得很好)

【问题讨论】:

    标签: spring spring-boot spring-boot-test


    【解决方案1】:

    您可以通过使用注解 @TestPropertySource 来实现。

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2018-09-29
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      相关资源
      最近更新 更多