Spring Boot MockMVC Test не загружает файл Yaml

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

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

@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 не вызывается.


person leo    schedule 13.08.2015    source источник
comment
Потому что ты делаешь это неправильно. Вы должны использовать @SpringApplicationConfiguration вместо @ContextConfiguration. Как объяснено там справочное руководство.   -  person M. Deinum    schedule 13.08.2015
comment
Ты прав! Спасибо! Если бы вы могли сделать это ответом, я был бы рад принять его.   -  person leo    schedule 13.08.2015


Ответы (2)


Существует целая глава в Справочном руководстве Spring Boot относительно тестирования. В этом разделе объясняется, как выполнить базовый тест для приложения Spring Boot.

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

person M. Deinum    schedule 13.08.2015

Существует хорошая интеграция между 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

person ayurchuk    schedule 17.05.2016