У меня есть приложение Spring-Boot, где свойства по умолчанию установлены в application.properties
файле в classpath (src / main / resources / application.properties).
Я хотел бы переопределить некоторые настройки по умолчанию в моем тесте JUnit свойствами, объявленными в test.properties
файле (src / test / resources / test.properties)
У меня обычно есть специальный класс Config для моих тестов 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 - 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
которые я должен был пропустить.