2015-08-13 18 views
5

Ho la mia configurazione nel file application.yml nella radice di classpath (src/main/resources /). La configurazione viene caricata correttamente quando avvio l'applicazione normalmente. Tuttavia nel mio test il file application.yml non viene caricato affatto.Spring Boot MockMVC Test non carica il file Yaml

L'intestazione del mio test sembra come segue:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration(classes = Configuration.class) 
@org.junit.Ignore 
public class ApplicationIntegrationTest { 

    @Inject 
    private WebApplicationContext wac; 

    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
    } 
... 

La classe di configurazione:

@EnableAutoConfiguration 
@ComponentScan("c.e.t.s.web, c.e.t.s.service") 
public class Configuration extends WebMvcConfigurerAdapter { 

Quando il debug dell'applicazione vedo che i file YML vengono caricati in ConfigFileApplicationListener, nel test tuttavia, ConfigFileApplicationListener non viene chiamato.

+0

Poiché si sta facendo male. Dovresti usare '@ SpringApplicationConfiguration' invece di' @ ContextConfiguration'. Come spiegato in [guida di riferimento] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications). –

+0

Hai ragione! Grazie! Se potessi fare una risposta, sarei felice di accettarla. – leo

risposta

5

C'è uno whole chapter nella Guida di riferimento di avvio di primavera per quanto riguarda i test. This section spiega come eseguire un test di base per un'applicazione Spring Boot.

In breve quando si utilizza Spring Boot e si desidera eseguire un test, è necessario utilizzare l'annotazione @ SpringApplicationConfiguration anziché l'annotazione @ContextConfiguration. L'@SpringApplicationConfiguration è un'estensione specializzata @ContextConfiguration che registra/avvia parte della magia Spring Boot anche per i casi di test.

0

C'è una buona integrazione tra StringBoot, jUnit e YAML.

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(MainBootApplication.class) 
public class MyJUnitTests { 
    ... 
} 


@Configuration 
@EnableConfigurationProperties 
@ConfigurationProperties(prefix = "section1") 
public class BeanWithPropertiesFromYML { 
    ... 
} 

Per maggiori informazioni si prega di controllare il mio commento qui: https://stackoverflow.com/a/37270778/3634283

Problemi correlati