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

MockMvc发起GET请求返回404但URL合法,Spring Boot测试问题排查

问题原因

  1. 测试类配置错误:你在@WebMvcTest注解中设置了useDefaultFilters = false,该配置会禁用Spring Web测试默认的组件扫描过滤器,导致即使你指定了要测试的控制器类,Spring也无法将其识别为控制器Bean完成注册,对应的请求映射路径自然不存在,返回404。
  2. 参数注解丢失:你在BadgeControllerImpl重写getBadge方法时,statisticId参数上丢失了接口中定义的@PathVariable注解。Spring MVC默认不会继承接口方法参数的注解,缺少该注解会导致Spring无法将路径中的statisticId变量绑定到方法入参,造成请求匹配失败返回404。

解决办法

方案1(推荐)

直接移除@WebMvcTest注解中的useDefaultFilters = false配置即可,@WebMvcTest默认会自动识别你指定的控制器类,完成映射注册:

// 修改前
@WebMvcTest(useDefaultFilters = false, controllers = [BadgeControllerImpl::class])
// 修改后
@WebMvcTest(controllers = [BadgeControllerImpl::class])

方案2(补全参数注解)

在实现类的statisticId参数上补全@PathVariable注解:

override fun getBadge(
    @PathVariable @NotEmpty statisticId: String,
    // 其余参数保持不变
)

修改完成后重新运行测试即可正常匹配到请求路径,返回200状态码。

内容的提问来源于stack exchange,提问作者d1snin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:11