Ho un'applicazione Spring-Boot in cui le proprietà predefinite sono impostate in un file application.properties
nel classpath (src/main/resources/application.properties).Sovrascrivi impostazioni predefinite dell'applicazione Spring-Boot application.properties in Junit Test
vorrei ignorare alcune impostazioni predefinite nel mio test JUnit con proprietà dichiarate in un file test.properties
(src/test/risorse/test.properties)
ho quando arrivavano avere una classe di configurazione dedicato per i miei test JUnit, per esempio
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 l'utilizzo @PropertySource("classpath:test.properties")
nella classe TestConfig farebbe il trucco, ma queste proprietà non sovrascriverà le impostazioni application.properties (vedi Primavera-Boot di riferimento Doc - 23. Externalized Configuration).
Quindi ho provato a utilizzare -Dspring.config.location=classpath:test.properties
durante il richiamo del test. Ciò ha avuto successo, ma non voglio impostare questa proprietà di sistema per ogni esecuzione del test. Così l'ho inserito nel codice
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
che purtroppo non è stato ancora un successo.
Ci deve essere una soluzione semplice su come ignorare le impostazioni di application.properties
nei test di JUnit con test.properties
che devo aver ignorato.
Questo è tutto. Grazie. Sfortunatamente non funziona se usato su ExampleApplication.class, quindi devo impostarlo su ogni classe di test. È giusto? – FrVaBe
Deve andare da qualche parte nella gerarchia della classe di test, ad esempio è possibile utilizzare una superclasse comune per configurarla su un numero di classi di test diverse. –
Sì, sarebbe un vero problema, ma poiché '@ PropertySource' è supportato nelle classi' @ Configuration' perché non anche '@ TestPropertySource' ;-) Comunque - come previsto, il framework non mi deluderà e ti ringrazio ancora per rispondere alla domanda. – FrVaBe