feat: rebuild CSP practice workflow, UX and automation
这个提交包含在:
44
docs/测试与TDD.md
普通文件
44
docs/测试与TDD.md
普通文件
@@ -0,0 +1,44 @@
|
||||
# 测试与 TDD
|
||||
|
||||
## 1. 测试分层
|
||||
|
||||
后端采用 Catch2,按分层设计测试:
|
||||
|
||||
1. **DB/迁移层**:表结构、索引、迁移兼容性
|
||||
2. **Service 层**:题库、提交判题、错题本、竞赛、知识库业务逻辑
|
||||
3. **Controller 层**:鉴权、参数解析、核心 HTTP 路径
|
||||
|
||||
## 2. 执行命令
|
||||
|
||||
```bash
|
||||
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`:题库 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/容器沙箱)。
|
||||
|
||||
在新工单中引用
屏蔽一个用户