как автоматически использовать файл свойств теста для тестов и файл свойств источника для выполнения приложения - PullRequest
0 голосов
/ 06 марта 2020

У меня есть приложение весенней загрузки с иерархиями исходного кода и тестов. В обеих иерархиях у меня есть файлы application.yml со свойствами.

Допустим, у меня в sr c application.yml есть следующее:

settings1:
    setting1: value11
settings2
    setting1: value12

где в приложении .yml в тесте У меня есть следующее:

settings1:
    setting1:testValue11

Я хочу, чтобы все мои тесты знали переопределенные значения из test application.yml, и если значение отсутствует в тесте application.yml, значение будет взято из sr c application.yml.

Но я хочу, чтобы при запуске мое приложение знало только настройки из sr c application.yml.

Как я могу решить это? Конфигурация будет предпочтительнее, чем значения проводки в коде.

1 Ответ

1 голос
/ 06 марта 2020

Пожалуйста, обратитесь к разделу 2.7.3. Многопрофильные документы YAML из Spring Boot Справочная документация.

Ниже приведен пример с одним файлом 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.102

192.168.1.101

Редактировать

Для отдельных / нескольких файлов yml

вместе с application.yml имеют отдельный application-<profile>.yml (здесь application-test.yml) для определения свойств профиля c. Конфигурация профиля c будет иметь приоритет при активном профиле.

Пример, определение application-test.yml

settings1:
    setting1: 192.168.1.102
...