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

测试Spring Controller时收到意外404返回码问题咨询

问题诱因及排查解决指南

常见诱因

  • baseUrl配置错误:测试代码中的baseUrl未正确赋值为"/bank/api/balance",存在拼写错误、前后斜杠缺失/冗余、大小写不匹配的问题,是最常见的触发原因。
  • Controller未被测试上下文加载:测试类未添加对应注解将目标Controller注册到Spring测试容器中,导致接口根本没有注册,自然匹配不到路径返回404。
  • 存在层级路径前缀:目标Controller类上标注了@RequestMapping注解设置了父级路径,或是应用配置了server.servlet.context-path上下文路径,实际完整接口路径与baseUrl取值不一致。
  • Controller注解配置错误:类上只标注了@Controller而没有使用@RestController,且方法未单独添加@ResponseBody注解,Spring会将请求按视图解析流程处理,找不到对应视图时也会返回404。

排查解决步骤

  • 第一步先校验baseUrl实际取值:在postBalanceAddRequest方法中打断点或添加打印语句,确认baseUrl的取值完全匹配接口的路径配置,没有拼写错误。
  • 第二步核对测试类注解:
    若使用Web切片测试,需保证测试类上添加了@WebMvcTest(目标Controller类名::class)注解,明确指定要加载的Controller;
    若使用全量Spring Boot测试,需保证测试类同时添加@SpringBootTest和@AutoConfigureMockMvc注解,且Controller所在包在启动类的扫描范围内。
  • 第三步核对Controller层级配置:查看Controller类上是否有@RequestMapping设置的父路径,以及application配置文件中是否配置了server.servlet.context-path上下文前缀,将这两部分路径拼接到baseUrl前,保证与完整接口路径一致。同时确认Controller类上标注的是@RestController,而非普通的@Controller。
  • 第四步开启请求匹配日志定位:在测试环境的配置文件中添加配置logging.level.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=trace,运行测试后查看控制台日志,可直接看到请求路径和所有已注册接口的匹配过程,快速定位路径不匹配的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:07