CLAUDE.md:补充测试纪律说明
明确测试代码可不守 ES5、正式代码禁止为测试服务、禁止为通过率降标准、 测试失败先裁根因、用例需覆盖正反面与边界。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -95,6 +95,18 @@ server/<游戏容器目录>/<游戏>/ ← 子游戏接入后**唯一
|
|||||||
- 对影响发牌/庄家/手牌/计分/重连的权威数据,禁止用默认值掩盖缺失(`|| 0`、`|| []`、`|| ''`)——应直接显式报错;默认值仅允许用于纯展示/日志字段。
|
- 对影响发牌/庄家/手牌/计分/重连的权威数据,禁止用默认值掩盖缺失(`|| 0`、`|| []`、`|| ''`)——应直接显式报错;默认值仅允许用于纯展示/日志字段。
|
||||||
- 一个职能只在一个模块实现——需要该能力时调用其所属模块,而不是在别处重新实现一份。
|
- 一个职能只在一个模块实现——需要该能力时调用其所属模块,而不是在别处重新实现一份。
|
||||||
|
|
||||||
|
## 测试纪律
|
||||||
|
|
||||||
|
与 `docs/client/development-guide/05` §10、`docs/server/development-guide/04` §10 一致,是本项目对测试代码的硬性要求:
|
||||||
|
|
||||||
|
- **测试代码可以不守严格 ES5**:严格 ES5 是为了兼容线上浏览器/友乐运行时;测试只跑在 Node(本地/CI),不上线,不受此限制,可用现代语法写测试。
|
||||||
|
- **正式代码(待测代码)禁止出现专为测试服务的逻辑**:不允许在核心业务代码里写"仅单测传 X 时……"之类的分支、专供测试用的钩子/后门、为了可测性而放宽的校验。
|
||||||
|
- **严禁为了让测试通过而修改正式代码**:除非确认是正式代码本身有业务缺陷(这种情况按缺陷修复处理,而不是"为了兼容测试");否则正式代码的行为不因测试而改变。
|
||||||
|
- **严禁为了测试通过率而降低测试标准**:不允许 skip/条件 return、软化断言、放宽阈值、try-catch 吞异常、把硬断言改成"存在才校验"等任何掩盖手段。
|
||||||
|
- **方向唯一**:正式代码服务生产,不服务测试——测试要适配正式代码的生产契约(真实的输入形状、真实的调用方式),而不是让正式代码迁就测试的简化输入/不规范 stub。
|
||||||
|
- **失败先裁根因**:测试失败时先用证据(打印中间态、最小复现)裁定是【业务代码缺陷】还是【测试脚本缺陷】,禁止凭猜测下结论;业务缺陷修业务、脚本缺陷修脚本,两者都保持/恢复硬断言。
|
||||||
|
- **用例要全面**:新增或修改测试时,正面用例(正常路径/合法输入)、反面用例(非法输入/错误路径/异常分支)、边界用例(空值、极值、临界条件、越界)三类都要覆盖,不能只测 happy path。
|
||||||
|
|
||||||
## Git 提交
|
## Git 提交
|
||||||
|
|
||||||
本仓库已初始化 git(见根目录 `.gitignore`)。提交纪律与 `docs/server/development-guide/04-开发规范与红线.md` §11 一致:
|
本仓库已初始化 git(见根目录 `.gitignore`)。提交纪律与 `docs/server/development-guide/04-开发规范与红线.md` §11 一致:
|
||||||
|
|||||||
Reference in New Issue
Block a user