You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:06:06