2015-08-13 10 views
5

Mam swoją konfigurację w pliku application.yml w katalogu głównym ścieżki klasy (src/main/resources /). Konfiguracja zostanie załadowana poprawnie, gdy normalnie uruchomię aplikację. Jednak w moim teście plik application.yml w ogóle się nie ładuje.Spring Boot MockMVC Test nie ładuje pliku Yaml

Nagłówek mojego testu wygląda następująco:

@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(); 
    } 
... 

Klasa konfiguracja:

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

Kiedy debugowania aplikacji widzę, że yml pliki ładowane w ConfigFileApplicationListener w teście jednak program ConfigFileApplicationListener nie zostanie wywołany.

+0

Ponieważ robisz to źle. Powinieneś użyć '@ SpringApplicationConfiguration' zamiast' @ ContextConfiguration'. Jak wyjaśniono tam [przewodnik referencyjny] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications). –

+0

Masz rację! Dzięki! Jeśli mógłbyś udzielić takiej odpowiedzi, chętnie ją zaakceptuję. – leo

Odpowiedz

5

W przewodniku Spring Boot Reference dotyczącym testowania znajduje się whole chapter. This section wyjaśnia, jak wykonać podstawowy test dla aplikacji Spring Boot.

W skrócie, gdy używasz Spring Boot i chcesz wykonać test, musisz użyć adnotacji @ SpringApplicationConfiguration zamiast adnotacji @ContextConfiguration. Numer @SpringApplicationConfiguration jest wyspecjalizowanym rozszerzeniem @ContextConfiguration, które rejestruje/uruchamia niektóre z magii Spring Boot również w przypadku testów.

0

Istnieje dobra integracja między StringBoot, jUnit i YAML.

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


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

Aby uzyskać więcej informacji proszę sprawdzić mój komentarz tutaj: https://stackoverflow.com/a/37270778/3634283