Предположим, я хочу интегрировать тестовый код, опирающийся на источник данных JPA, в приложении Spring Boot 2.x с PostgreSQL testcontainer
(отличный инструмент для управления контейнерами Docker из тестовых классов с одной или несколькими строками кода).Предположим далее, что я управляю портами (включенными в URL JDBC) в application.properties
, например,
spring.datasource.url=jdbc:postgresql://user-service-postgres:5432/user_service
. В интеграционном тесте я создаю тест-контейнеры с
@Rule
PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer();
.Метод подготовки. Я могу получить доступ к значению, которое я хочу установить для spring.datasource.url
с помощью
postgreSQLContainer.getJdbcUrl()
Как указать Spring Boot в тесте использовать этот URL-адрес вместо того, который указан в application.properties
.
Я хотел бы придерживаться своих файлов свойств, чтобы минимизировать изменения, но я благодарен за другие подходы, включая объяснение, почему они также превосходят или необходимы.
Я используюSpring Boot 2.x.