1.3 KiB
1.3 KiB
测试与 TDD
1. 测试分层
后端采用 Catch2,按分层设计测试:
- DB/迁移层:表结构、索引、迁移兼容性
- Service 层:题库、提交判题、错题本、竞赛、知识库业务逻辑
- 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.cc:Auth 接口problem_service_test.cc:题库查询submission_service_test.cc:提交评测 + 错题本流转contest_service_test.cc:竞赛排行榜逻辑kb_service_test.cc:知识库读取problem_http_test.cc:题库 HTTPme_http_test.cc:个人信息 + 错题本 HTTPcontest_http_test.cc:竞赛 HTTPsubmission_http_test.cc:运行与提交 HTTP
4. TDD 落地流程建议
- 先写失败测试(接口契约/业务规则)
- 实现最小功能通过测试
- 重构并保持测试全绿
- 增加边界条件测试(无 token、参数错误、not found、竞赛状态校验)
5. 注意事项
- 当前判题使用本机
g+++timeout,用于开发环境。 - 生产环境建议接入隔离沙箱(如 isolate/nsjail/容器沙箱)。