当前位置: 首页 > 知识库问答 >
问题:

如何自动使用测试属性文件进行测试和源属性文件进行应用程序执行

周祺
2023-03-14

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

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

settings1:
    setting1: value11
settings2
    setting1: value12

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

settings1:
    setting1:testValue11

我希望我的所有测试都知道test application.yml中重写的值,如果test application.yml中没有值,则将从src application.yml中获取该值。

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

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

共有1个答案

吉岳
2023-03-14

请参阅第2.7.3节。来自Spring Boot参考文档的多配置文件YAML文档。

包含单个application.yml文件的示例如下所示。

settings1:
    setting1: 192.168.1.100
settings2:
    setting1: 192.168.1.101
---
spring:
    profiles: test
settings1:
    setting1: 192.168.1.102

和测试用例,如下所示

@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.101

编辑

对于单独/多个yml文件,

settings1:
    setting1: 192.168.1.102
 类似资料:
  • 我现在开始使用JUnit5和Spring Boot的测试。我有一个包含控制器、服务和存储库的Rest API,以及一些使用从我的获取属性的utils类。我没有使用Spring中的“profiles”,只是使用默认配置。 我的应用程序主: 我的项目的体系结构是: 我在主测试类中尝试了“@TestPropertySource”和/或“@ActiveProfiles(”Test“)”,但没有成功。还尝试

  • 背景:我想根据模式自动验证XML文件。为此,我在中创建了一个maven-project和一个-class。 为了运行测试,我在中创建了。我的想法是将XML和XSD文件(我想要验证)放入文件夹,并按文件名“抓取”它们。但是当我运行时,找不到文件。 我的测试类: 当我运行时,我得到了一个文件找不到的异常,例如-它在资源文件夹中。 我尝试了Maven(surefire)的解决方案:通过-标记复制文件,从

  • 问题内容: 我正在寻找在使用本地文件对Golang进行测试时应该使用的最佳实践。 通过使用本地文件,我的意思是为了测试功能,应用程序需要一些本地文件,因为该应用程序经常从这些文件中读取数据。 我不确定是否应该在使用ioutil包tempdir和tempfile函数运行测试之前自己写临时文件,还是创建一个测试文件夹? 然后从里面的内容中读取 谢谢 问题答案: 这是我当前的测试设置: 特定于单个程序包

  • 我有以下pom.xml: 注意,上的元素被注释掉了 在中还有以下内容 因此,我希望Maven做的只是用替换,除非开发配置文件被激活,否则我希望Maven用替换 当我运行时,它将值设置为。很好,资源筛选工作正常。 但是,当我运行时,它将值设置为 如果取消对配置文件上的元素的注释并运行,则会将设置为 我甚至运行了让它输出活动的配置文件名称,并且在上面的两种情况下,它都表示开发配置文件是活动的,但是如果

  • 我正在使用gradle来构建和测试我的应用程序。我使用命令 但是当从eclipse中运行时,测试工作完美,当使用gradle运行时失败。我的测试定义如下,它找不到的属性文件在这两个文件夹中: /home/user/Development/git/myproject/src/main/java/com/mycompany/config/home/user/Development/git/myproj