Как определить spring.config.name для тестов Spring Boot? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть приложение Spring Boot с такой настраиваемой конфигурацией:

src/main/resources
├── application.properties
├── config1
│   ├── application-dev.properties
│   ├── application-prod.properties
│   └── application.properties
├── config2
│   ├── application-dev.properties
│   ├── application-prod.properties
│   └── application.properties
└── config3
    ├── application-dev.properties
    ├── application-prod.properties
    └── application.properties

с конфигурацией для использования, указанной во время выполнения как:

java -jar \
-Dspring.profiles.active=dev \
-Dspring.config.name=application,config1/application \
target/my-application.0.0.1.jar

Как мне указать это для а @SpringBootTest? Я пробовал использовать @TestPropertySources, но это не работает:

@SpringBootTest
@ActiveProfiles("prod")
@TestPropertySources({
        @TestPropertySource("classpath:application.properties"),
        @TestPropertySource("classpath:application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config1/application.properties"),
        @TestPropertySource("classpath:config1/application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config2/application.properties"),
        @TestPropertySource("classpath:config2/application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config3/application.properties"),
        @TestPropertySource("classpath:config3/application-${spring.profile.active}.properties")
})

1 Ответ

0 голосов
/ 17 июня 2020

Spring Boot позволяет указывать свойства как в @SpringBootTest, так и @TestPropertySource, которые могут использоваться для указания свойства spring.config.name. Следующее, например, загружает все конфигурации с профилем dev:

@SpringBootTest(properties = {
        "spring.config.name=config1/application,config2/application,config3/application,application"
})
@ActiveProfiles("dev")

Это, скорее всего, работает, поскольку эти свойства имеют высокий приоритет в указанном порядке здесь .

...