J'ai une application Spring-Boot où les propriétés par défaut sont définies dans un application.properties
fichier dans le chemin de classe (src / main / resources / application.properties).
Je voudrais remplacer certains paramètres par défaut dans mon test JUnit avec des propriétés déclarées dans un test.properties
fichier (src / test / resources / test.properties)
J'ai habituellement une classe de configuration dédiée pour mes tests Junit, par exemple
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 {
}
J'ai d'abord pensé que l'utilisation @PropertySource("classpath:test.properties")
de la classe TestConfig ferait l'affaire, mais ces propriétés n'écraseront pas les paramètres application.properties (voir le document de référence Spring-Boot - 23. Externalized Configuration ).
Ensuite, j'ai essayé d'utiliser -Dspring.config.location=classpath:test.properties
lors de l'appel du test. Cela a réussi - mais je ne veux pas définir cette propriété système pour chaque exécution de test. Je l'ai donc mis dans le code
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
qui malheureusement n'a de nouveau pas réussi.
Il doit y avoir une solution simple sur la façon de remplacer les application.properties
paramètres dans les tests JUnit avec ce test.properties
que j'ai dû ignorer.