Вы можете вручную переопределить свойство из теста Spring-boot, используя ContextConfiguration
и ApplicationContextInitializer
.
Переопределить свойство - определить статический внутренний класс:
static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
String url = "jdbc:mysql://" + DB.getContainerIpAddress() + ":" + DB.getMappedPort(3306) + "/my_db";
TestPropertyValues
.of("datasources.schema1.url=" + url)
.applyTo(configurableApplicationContext.getEnvironment());
}
}
Примечание: я предположил, что url
является производным от IP-адреса, порта и имени БД. Вы можете изменить эту часть по мере необходимости, но основная идея остается.
ApplicationContextInitializer
можно использовать для программной инициализации контекста Spring перед обновлением контекста. Теперь подключите класс инициализатора контекста, добавив примечания на уровне класса теста с помощью ContextConfiguration
:
@ContextConfiguration(initializers = Initializer.class)
Docs:
ApplicationContextInitializer
ContextConfiguration