文件
csp/docs/测试与TDD.md

1.3 KiB
原始文件 Blame 文件历史

测试与 TDD

1. 测试分层

后端采用 Catch2,按分层设计测试

  1. DB/迁移层:表结构、索引、迁移兼容性
  2. Service 层:题库、提交判题、错题本、竞赛、知识库业务逻辑
  3. Controller 层:鉴权、参数解析、核心 HTTP 路径

2. 执行命令

cmake -S . -B build -G Ninja
cmake --build build
ctest --test-dir build -V

3. 现有测试覆盖

  • sqlite_db_test.cc:迁移后核心表存在
  • auth_service_test.cc:注册/登录/token 校验
  • auth_http_test.ccAuth 接口
  • problem_service_test.cc:题库查询
  • submission_service_test.cc:提交评测 + 错题本流转
  • contest_service_test.cc:竞赛排行榜逻辑
  • kb_service_test.cc:知识库读取
  • problem_http_test.cc:题库 HTTP
  • me_http_test.cc:个人信息 + 错题本 HTTP
  • contest_http_test.cc:竞赛 HTTP
  • submission_http_test.cc:运行与提交 HTTP

4. TDD 落地流程建议

  1. 先写失败测试(接口契约/业务规则)
  2. 实现最小功能通过测试
  3. 重构并保持测试全绿
  4. 增加边界条件测试(无 token、参数错误、not found、竞赛状态校验

5. 注意事项

  • 当前判题使用本机 g++ + timeout,用于开发环境。
  • 生产环境建议接入隔离沙箱(如 isolate/nsjail/容器沙箱)。