Mam aplikację Spring-Boot, w której właściwości domyślne są ustawione w application.properties
pliku w ścieżce klasy (src / main / resources / application.properties).
Chciałbym zastąpić niektóre ustawienia domyślne w moim teście JUnit właściwościami zadeklarowanymi w test.properties
pliku (src / test / resources / test.properties)
Zwykle mam dedykowaną klasę konfiguracji dla moich testów Junit, np
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 {
}
Najpierw pomyślałem, że użycie @PropertySource("classpath:test.properties")
w klasie TestConfig załatwi sprawę, ale te właściwości nie zastąpią ustawień application.properties (patrz Dokumentacja Spring-Boot Reference - 23. Konfiguracja zewnętrzna ).
Następnie próbowałem użyć -Dspring.config.location=classpath:test.properties
podczas wywoływania testu. To się udało - ale nie chcę ustawiać tej właściwości systemowej dla każdego wykonania testu. Tak więc umieściłem to w kodzie
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
co niestety znów się nie powiodło.
Musi istnieć proste rozwiązanie, w jaki sposób zastąpić application.properties
ustawienia w testach JUnit, z test.properties
czym musiałem przeoczyć.