2016-09-17 8 views
2

Я пишу интеграционный тест для моего приложения, и вы хотите использовать пользовательскую конфигурацию webmvc для моих тестовSpring тестовой конфигурации загрузки не выбрал

У меня есть три класса в моем базовом пакете com.marco.nutri:

  • Применение (который помечается @SpringBootApplication)
  • MvcConfig (@Configuration и @EnableWebMVC)
  • SecurityConfig (@Configuration и @EnableWebSecurity)

Мой тест находится в пакете br.com.marco.nutri.integration.auth:

@RunWith(SpringRunner.class) 
@SpringBootTest(classes={Application.class, WebMvcTestConfiguration.class, SecurityConfig.class}) 
public class ITSignup { 

    //Test code 

} 

У меня есть тестовый класс конфигурации в пакете com.marco.nutri.integration:

@TestConfiguration 
@EnableWebMvc 
public class WebMvcTestConfiguration extends WebMvcConfigurerAdapter { 
    //Some configuration 
} 

Но когда я запускаю мой тест, то MvcConfig.class определена вместо WebMvcTestConfiguration.class

Что я делаю неправильно?

ответ

2

вы можете аннотировать тестовую конфигурацию с @Profile("test") и вашим реальным с @Profile("production")

и в свойствах файла поместить свойство spring.profiles.active=production и в тестовом классе положить @Profile("test"). Поэтому, когда ваше приложение запускается, он будет использовать класс «production», а при тестировании он будет использовать класс «тест».

из документации

В отличие от обычных классов @Configuration использование @TestConfiguration не предотвращает автоматическое обнаружение @SpringBootConfiguration.

В отличие от вложенного класса @Configuration, который будет использоваться вместо первичной конфигурации с вашего приложения, вложенная @TestConfiguration класс будет использоваться в дополнение к первичной конфигурации вашего приложения .

+0

, но при удалении конфигурации из моего производства класса он выбирает класс с TestConfiguration –

+0

, как вы знаете, что класс с TestConfiguration не ковырял all..do вы используете точки останова или напечатать что-нибудь? –

+0

Я просто спрашиваю, потому что было бы немного сложно, если бы выполнялись два класса конфигурации, потому что @TestConfiguration не заменит производственный класс. Оба они будут работать вместе. –

 Смежные вопросы

  • Нет связанных вопросов^_^