【问题标题】:Specifying @SpringBootApplication in @WebMvcTest在@WebMvcTest 中指定@SpringBootApplication
【发布时间】:2019-04-08 15:51:13
【问题描述】:

使用@WebMvcTest 将通过查找@SpringBootConfiguration 类(例如@SpringBootApplication)来自动配置所有Web 层bean。

如果配置类在不同的包中,扫描找不到,可以直接提供给@WebMvcTest吗?

【问题讨论】:

    标签: spring spring-boot spring-mvc spring-boot-test


    【解决方案1】:

    以下将指向正确的@SpringBootApplication 类:

    @RunWith(SpringJUnit4ClassRunner.class)
    @WebMvcTest(controllers = {MyController.class})
    @ContextConfiguration(classes={MySpringBootApplicationClass.class})
    public class MyControllerTest {
        //...
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用 @WebMvcTest 进行测试,则意味着您主要专注于测试 spring mvc 层,而不是更深入地研究应用程序。 p>

      所以这个注解只能在一个测试关注Spring的时候使用 MVC 组件. 默认情况下,使用@WebMvcTest 注解的测试将 还自动配置 Spring Security 和 MockMvc(包括对 HtmlUnit WebClient 和 Selenium WebDriver)。对于更细粒度 MockMVC的控制@AutoConfigureMockMvc注解可以 used. 通常 @WebMvcTest 与 @MockBean 或 @Import 来创建您的 @Controller bean 所需的任何协作者.

      import org.springframework.context.annotation.Configuration;
      import org.springframework.context.annotation.Import;
      
      @Configuration
      @Import({ CustomerConfig.class, SchedulerConfig.class })
      public class AppConfig {
      
      }
      

      然后您可以在 @WebMvcTest 带注释的测试类中使用 @import 导入此配置类,并且这些 bean 应该会在 spring 中被拾取。

      参考:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTest.html

      【讨论】:

        猜你喜欢
        • 2016-12-17
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 2018-09-06
        • 1970-01-01
        相关资源
        最近更新 更多