Заменить заполнители свойств в файле свойств spring profile-specific c - PullRequest
0 голосов
/ 25 мая 2020

Я пишу тест для приложения с весенней загрузкой и сталкиваюсь со странным поведением при замене заполнителя в файле свойств c приложения, заданном для профиля. * Мои кредиты в БД настроены как

...
<profiles>
    <profile>
        <properties>
            <db.user>MyLogin</db.user>
            <db.password>MyPassword</db.password>
            <db.url>my_db_connection_url</db.url>
        </properties>
    </profile>
</profiles>
...

Таким образом, в настройках есть только один профиль. xml. В приложении у меня есть файл свойств приложения c с указанием профиля, например:

application-myprofile.properties:

spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@

, и пока я запускаю приложение весенней загрузки с указанием c профиль myprofile - все работает нормально, из настроек вытаскиваются кредиты. xml.

Однако для тестов у меня немного другая настройка.

I иметь такой тестовый класс:

@SpringBootTest
@ActiveProfiles("mytestprofile")
public class MyTest {
    ....
}

и соответствующий файл свойств тестового профиля внутри test/resources вот так

application-mytestprofile.properties

spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@

и в этом в случае, если заполнители не заменяются значениями из settings.xml. Однако, если я заменю содержимое application-mytestprofile.properties на

spring.datasource.url=my_db_connection_url
spring.datasource.username=MyLogin
spring.datasource.password=MyPassword

, он будет работать нормально. Кроме того, если я помещаю заполнители внутри application.properties:

spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@

, это тоже работает.

Возникает вопрос: почему это так? Как я могу заставить файл свойств приложения c с указанием профиля работать с settings.xml в тестах?

1 Ответ

0 голосов
/ 26 мая 2020

У меня нет всех подробностей о настройке вашего проекта, но похоже, что у вас есть тестовая структура папок, например:

test 
    -> java 
            -> resources

, хотя я думаю, что это должно быть

test 
    -> java
    -> resources

Итак, переместите папку с тестовыми ресурсами на один уровень вверх, и она должна работать.

...