У меня есть приложение Spring -Boot, где свойства по умолчанию задаются в файле application.properties
в пути к классам (src/main/resources/application.properties).
Я хотел бы переопределить некоторые настройки по умолчанию в своем тесте JUnit со свойствами, объявленными в файле test.properties
(src/test/resources/test.properties)
Обычно у меня есть специальный класс конфигурации для моих тестов Junit, например.
package foo.bar.test;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
}
Сначала я подумал, что использование @PropertySource("classpath:test.properties")
в классе TestConfig сделает трюк, но эти свойства не будут перезаписывать параметры application.properties(см. Spring -Boot Reference Doc - 23. Внешняя конфигурация).
Затем я попытался использовать -Dspring.config.location=classpath:test.properties
при вызове теста. Это было успешным, но я не хочу устанавливать это системное свойство для каждого теста. Таким образом, я поместил его в код
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
который, к несчастью, снова не удался.
Должно быть простое решение о том, как переопределить параметры application.properties
в тестах JUnit с помощью test.properties
, которые я должен упустить.