Mam aplikację Spring-Boot, w której właściwości domyślne są ustawiane w plikuw ścieżce classpath (src/main/resources/application.properties).Zastępowanie domyślnych ustawień aplikacji application.properties Spring-Test w wersji
chciałbym zastąpić niektóre ustawienia domyślne w moim teście JUnit z właściwości zadeklarowane w pliku test.properties
(src/test/zasobów/test.properties)
przeważnie mam dedykowanego Config klasy dla moich testów JUnit, na przykład
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 {
}
raz pierwszy pomyślał, że za pomocą @PropertySource("classpath:test.properties")
w klasie TestConfig by rade, ale te właściwości nie zastąpi ustawienia application.properties (patrz Wiosna-Boot nr DOC - 23. Externalized Configuration).
Potem 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 go w kodzie
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
który niefortunnie znowu nie powiodło się.
Musi być proste rozwiązanie, aby zastąpić ustawienia application.properties
w testach JUnit z test.properties
, które musiałem przeoczyć.
To wszystko. Dzięki. Niestety nie działa, gdy jest używany w klasie ExampleApplication.class, więc muszę ustawić go na każdej klasie testowej. Czy to prawda? – FrVaBe
Musi przejść gdzieś w hierarchii klasy testowej, tzn. Można użyć wspólnej superklasy, aby skonfigurować ją w wielu różnych klasach testowych. –
Tak, byłoby to właściwe, ale ponieważ '@ PropertySource' jest obsługiwana w klasach' @ Configuration', dlaczego nie również '@ TestPropertySource' ;-) W każdym razie - zgodnie z oczekiwaniami, framework mnie nie zawiedzie i jeszcze raz dziękuję za udzielenie odpowiedzi na pytanie. – FrVaBe