2015-08-13 5 views
5

У меня есть моя конфигурация в файле application.yml в корне classpath (src/main/resources /). Конфигурация загружается нормально, когда я запускаю приложение нормально. Однако в моем тесте файл application.yml вообще не загружается.Весенняя загрузка MockMVC Test не загружает файл Yaml

Заголовок моего теста выглядит следующим образом:

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

Класс конфигурации:

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

Когда я отладки приложения, я вижу, что YML файлы загружаются в ConfigFileApplicationListener, в тесте однако ConfigFileApplicationListener не вызван.

+0

Потому что вы делаете это неправильно. Вы должны использовать '@ SpringApplicationConfiguration' вместо' @ ContextConfiguration'. Как поясняется в [справочном руководстве] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications). –

+0

Вы правы! Благодаря! Если бы вы могли ответить на этот вопрос, я был бы рад принять его. – leo

ответ

5

В руководстве по весеннему загрузке есть whole chapter. This section объясняет, как выполнить базовый тест для приложения Spring Boot.

Короче говоря, используя Spring Boot, и вы хотите сделать тест, вам нужно использовать аннотацию @ SpringApplicationConfiguration вместо аннотации @ContextConfiguration. @SpringApplicationConfiguration - это специализированное расширение @ContextConfiguration, которое регистрирует/загружает некоторые магии Spring Boot для тестовых случаев.

0

Существует хорошая интеграция между StringBoot, jUnit и YAML.

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


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

Для получения более подробной информации, пожалуйста, проверьте мой комментарий здесь: https://stackoverflow.com/a/37270778/3634283