首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动使用用于测试的测试属性文件和用于应用执行的源属性文件

如何自动使用用于测试的测试属性文件和用于应用执行的源属性文件
EN

Stack Overflow用户
提问于 2020-03-06 20:48:23
回答 1查看 74关注 0票数 0

我有一个spring启动应用程序,它有源代码和测试层次结构。在这两个层次结构中,我都有带属性的application.yml文件。

假设我在src application.yml中有以下内容:

代码语言:javascript
运行
复制
settings1:
    setting1: value11
settings2
    setting1: value12

在测试中的application.yml中,我得到了以下内容:

代码语言:javascript
运行
复制
settings1:
    setting1:testValue11

我希望我的所有测试都知道来自测试application.yml的重写值,如果测试application.yml中不存在某个值,则将从src application.yml中提取该值。

但我希望当我的应用程序运行时,它只知道来自src application.yml的设置。

我该怎么解决它呢?配置会更好,而不是在代码中连接值。

EN

回答 1

Stack Overflow用户

发布于 2020-03-06 21:35:41

请参考Spring Boot参考文档中的2.7.3. Multi-profile YAML Documents部分。

下面是一个包含单个application.yml文件的示例。

代码语言:javascript
运行
复制
settings1:
    setting1: 192.168.1.100
settings2:
    setting1: 192.168.1.101
---
spring:
    profiles: test
settings1:
    setting1: 192.168.1.102

以及如下所示的测试用例

代码语言:javascript
运行
复制
@SpringBootTest
@ActiveProfiles("test")
class ApplicationTest {

    @Value("${settings1.setting1}")
    String setting1;

    @Value("${settings2.setting1}")
    String setting2;

    @Test
    void test() {
        System.out.println(setting1);
        System.out.println(setting2);
    }

}

测试用例将打印出来

192.168.1.102

192.168.1.101

编辑

对于单独/多个yml文件,

除了application.yml之外,还有一个单独的application-<profile>.yml (这里是application-test.yml)来定义特定于概要文件的属性。特定于配置文件的配置将优先于该配置文件为活动的配置文件。

例如,定义application-test.yml

代码语言:javascript
运行
复制
settings1:
    setting1: 192.168.1.102
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60564417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档