Я пишу тест для приложения с весенней загрузкой и сталкиваюсь со странным поведением при замене заполнителя в файле свойств 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
в тестах?