feat: 重组为标准 skill 包结构 + 修复 verify.sh bash 3.2 兼容
- 新增 .claude/skills/new-project/SKILL.md(标准 skill 格式) - install-skill.sh 安装时组装 SKILL.md + verify.sh,单一源无重复 - verify.sh 改用索引数组替代 declare -A,兼容 macOS bash 3.2 - log_pass/log_skip 显式 return 0,避免 set -e 下非 verbose 误退出 - README 改为 skill 优先;补全 copier.yml/scripts/template 入库
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# TDD 开发流程与测试策略
|
||||
|
||||
> Red-Green-Refactor(强制)+ 测试金字塔 + 覆盖率门禁。
|
||||
|
||||
## TDD 开发流程(测试先行,强制)
|
||||
|
||||
**严禁先写实现后补测试。** 测试是契约的可执行规格,先于实现存在。每个单元按 Red-Green-Refactor 循环推进:
|
||||
|
||||
1. **Red**:依据契约写一个失败测试,描述期望行为(此时无实现)
|
||||
2. **Green**:写**最小**实现让测试通过,不做超前设计
|
||||
3. **Refactor**:在测试保护下重构,消除重复、提升内聚,测试须始终为绿
|
||||
|
||||
- 一个 R-G-R 循环对应一次原子提交(`test:` 与 `feat:` 可分可合)
|
||||
- 测试名描述「行为 + 期望」,而非实现细节
|
||||
- **学派**:应用/编排层面向端口用 mockist(伦敦学派,mock 协作者验交互);领域纯逻辑用 classicist(芝加哥学派,验状态、不 mock)
|
||||
- 顺序恒为:**定契约 → 写测试(Red)→ 实现(Green)→ 重构(Refactor)**
|
||||
|
||||
## 测试策略
|
||||
|
||||
承接 TDD 产出的单元层,补齐集成与 E2E。测试金字塔,**底层为主**。覆盖率在 CI 强制,不达标禁止合并。
|
||||
|
||||
| 层级 | 范围 | 占比 | 工具 |
|
||||
|------|------|------|------|
|
||||
| 单元 | 纯函数、节点、service、hook(mock 边界) | ~70% | pytest / vitest |
|
||||
| 集成 | 路由+DB、WS 代理转发、DAG 串联 | ~25% | httpx / Testing Library |
|
||||
| E2E | 一条龙:输入→生成→下载(mock LLM CLI 输出) | ~5% | Playwright |
|
||||
|
||||
- **覆盖率门禁**:行覆盖 ≥ 80%(核心 hooks/schemas/dag 节点 100%),CI `--cov-fail-under=80` / vitest `coverage.thresholds`
|
||||
- **mock 边界清晰**:只 mock 外部依赖(LLM CLI 子进程、Chromium、网络),不 mock 被测对象内部
|
||||
- **测试命名**:`test_<被测>_<场景>_<期望>`;一个测试只断言一件事
|
||||
- **确定性**:禁止依赖真实时间/网络/随机;用 fixture 注入
|
||||
Reference in New Issue
Block a user