У мене є програма Spring-Boot, де властивості за замовчуванням встановлюються у application.propertiesфайлі classpath (src / main / ресурси / application.properties).
Я хотів би замінити деякі параметри за замовчуванням у своєму тесті JUnit із властивостями, задекларованими у test.propertiesфайлі (src / test / ресурси / 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 Doc - 23. Externalized Configuration ).
Потім я спробував використовувати, -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що я, мабуть, не звернув уваги.