Spring引导测试配置未被选中

时间:2016-09-17 21:24:23

标签: java spring spring-boot spring-test

我正在为我的应用程序编写集成测试,并希望为我的测试使用自定义webmvc配置

我的基础包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

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您可以使用@Profile("test")和真实的@Profile("production")

注释您的测试配置

并在您的属性文件中放置属性spring.profiles.active=production并在测试类中放置@Profile("test")。因此,当您的应用程序启动时,它将使用“生产”类,当测试星星时,它将使用“测试”类。

来自文档

  

与常规@Configuration类不同,使用@TestConfiguration   不会阻止自动检测@SpringBootConfiguration。

     

与嵌套的@Configuration类不同,后者将用于代替   应用程序的主要配置,嵌套的@TestConfiguration   除了应用程序的主要内容之外,还将使用class   配置。