后端测试与交付规范

reference
2026年7月20日1 min read113 words

Updated 2026年7月20日

后端测试与交付规范

适用场景

修改后端逻辑、JUnit 测试、Maven 配置或 README.mdDECISIONS.mdAI_USAGE.md 时加载。

测试规范

  • 为新增或澄清的非平凡行为先补一个失败测试,再写最小实现。
  • 纯领域逻辑使用 JUnit 5 和固定 Instant,不启动 Spring 上下文,不依赖真实时钟、网络、数据库或测试顺序。
  • 测试可观察决策,不测试私有方法;除状态和动作外,还断言 safeToCreateAgainreasonCode、回填值和 nextCheckAt
  • 不删除、禁用或放宽 starter 测试。
  • Controller、参数校验、异常映射和 traceId 过滤器优先使用 MockMvc 的 MVC 切片测试;只有确需验证多层装配时才使用 @SpringBootTest
  • Repository 使用与实际持久化方案匹配的切片或集成测试;不把 mock 数据库测试当成真实事务与约束证明。

优先覆盖:

  • 三种不确定建单结果和非白名单拒绝均禁止重建。
  • 重复确认、旧事件晚到和标识冲突。
  • 唯一 PENDINGFAILEDCANCELLED
  • 默认上限为 3 时,查询前次数为 1 和 2 的边界。
  • 多匹配、查询错误、字段缺失和引用不匹配。
  • 人工审核的粘性和终态冲突。

验证门禁

  • 从仓库根目录运行 mvn -f backend/pom.xml test
  • 涉及 HTTP 接口时,验证正常响应、校验失败和未处理异常都返回 X-Trace-Id,错误体中的 traceId 与请求、日志及审计记录一致。
  • traceId 测试至少覆盖:合法请求头原样沿用、缺失或非法请求头生成新值、请求结束后 MDC 清理、下游调用继续传递当前值。
  • 不存在的格式化或静态检查工具不为本次任务新增。
  • 测试失败时报告具体失败和原因,不声称交付完成。

交付文档

  • README.md:运行命令、核心设计、已知限制和生产化缺口。
  • DECISIONS.md:核心风险、状态转移、允许重建的唯一条件、人工处理条件,以及持久化、并发控制、消息去重和可观测性方案。
  • AI_USAGE.md:使用的工具、AI 参与环节、验证方式和真实产品中的边界。
  • 文档必须与实际代码一致,不保留未说明的 TODO

完成定义

  • mvn -f backend/pom.xml test 全部通过。
  • 决策表、业务安全、幂等乱序和异常分类均有覆盖。
  • 任何未知、冲突或不可证明安全的结果都不会导致重复下单或静默覆盖。
  • 所有 HTTP 路径通过统一过滤器建立 traceId,Controller 不重复接收;请求、响应、错误日志和审计记录可按同一值关联。
  • 未实现的生产化事项已记录而未越界实现。