使用@WebMvcTest时@Autowired的MockMvc为空且控制器未实例化?
Spring Boot 2.0.6 REST控制器测试问题
我按照Spring Boot 2.0.6官方文档测试REST控制器,文档说明只需用@WebMvcTest(.class)注解测试类。我的测试类代码如下:
//@SpringBootTest(classes = FixingController.class) //@TestPropertySource(properties = { // "security.basic.enabled=false", // "fixing.controller.enabled=true" //}) //@AutoConfigureMockMvc(secure = false) @WebMvcTest(FixingController.class) public class FixingControllerTest { @Autowired private MockMvc mockMvc; }
运行测试时出现问题:mockMvc为空,控制器实例也未初始化,添加@MockBean也无法创建实例,且控制台无报错信息。
解决方案
最终通过调整测试类注解配置解决问题:需要添加@EnableWebMvc注解,否则REST控制器的相关注解会被忽略,发送Content-Type为JSON的POST请求时还会返回415状态码。修正后的测试类代码如下:
@ExtendWith(SpringExtension.class) @EnableWebMvc @SpringBootTest(classes = FixingController.class) @AutoConfigureMockMvc(secure = false) @TestPropertySource(properties = { "fixing.controller.enabled=true" }) public class FixingControllerTest { @Autowired private MockMvc mvc; }
内容的提问来源于stack exchange,提问作者juckky
相关产品推荐
相关产品推荐

