Ho un'applicazione Spring-Boot in cui le proprietà predefinite sono impostate in un application.properties
file nel percorso di classe (src / main / resources / application.properties).
Vorrei sovrascrivere alcune impostazioni predefinite nel mio test JUnit con le proprietà dichiarate in un test.properties
file (src / test / resources / test.properties)
Di solito ho una lezione di configurazione dedicata per i miei test Junit, ad es
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 {
}
Ho pensato che usare @PropertySource("classpath:test.properties")
la classe TestConfig avrebbe funzionato, ma queste proprietà non sovrascrivevano le impostazioni application.properties (vedi Documento di riferimento di Spring-Boot - 23. Configurazione esterna ).
Quindi ho provato a usare -Dspring.config.location=classpath:test.properties
quando invoco il test. Ciò ha avuto esito positivo, ma non voglio impostare questa proprietà di sistema per ogni esecuzione del test. Quindi l'ho inserito nel codice
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
che sfortunatamente non ebbe ancora successo.
Ci deve essere una soluzione semplice su come sovrascrivere le application.properties
impostazioni nei test JUnit con test.properties
quella che devo aver trascurato.