关于 testing
面向 Noodle 开发者的测试驱动技能,强调修复前先复现问题。内容说明基于目录的测试夹具,并提供运行、检查和维护测试套件的命令。
主要功能
- 01先复现问题再修复
- 02基于目录的测试夹具
- 03缺陷夹具使用指南
- 04测试与检查命令
- 05维护夹具哈希和输出
适用场景
- 01改代码前复现缺陷
- 02添加基于夹具的回归测试
- 03运行单包或集成测试
- 04检查夹具与项目质量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ poteto/ noodle --skill testing安装后在 Claude Code 中输入/testing确认已加载。
附带文件references/fixtures.md
详细介绍
测试
默认采用测试驱动。在解决问题前,先证明问题存在。
核心工作流:先复现 Bug
- 复现 — 运行失败场景并观察实际行为
- 编写失败测试 — 将最小复现写成测试用例
- 提交失败测试 — 使用
Skill(commit),提交消息类似test: reproduce #issue-description - 修复代码 — 现在才尝试修复
- 验证 — 运行
pnpm test并确认测试通过 - 提交修复 — 与测试分开提交
所有 Bug 修复都适用此流程。失败测试能证明 Bug 存在,并防止回归。
Fixture 测试
Noodle 使用基于目录的 fixture,存放在 testdata/ 中。有关完整格式、辅助 API 和代码模式,请阅读 references/fixtures.md。
创建新 Fixture
./scripts/scaffold-fixture.sh <package-dir> <fixture-name> [state-count]
填写生成的 input.json/input.ndjson 和 expected.md,然后:
pnpm fixtures:hash:sync
Bug Fixture
有关完整的 Bug fixture 格式(frontmatter 字段、预期错误部分和修复工作流),请参阅 references/fixtures.md。
常用命令
| 命令 | 用途 |
|---|---|
pnpm test | 运行所有测试 |
pnpm test:short | 跳过集成测试 |
pnpm check | 完整的本地 CI(测试 + vet + lint + fixtures) |
pnpm bugs | 列出标记为已知 Bug 的 fixture |
pnpm fixtures:loop | 验证 loop fixture 是否符合预期 |
pnpm fixtures:loop:record | 重新生成 loop fixture 的预期输出 |
pnpm fixtures:hash | 验证 fixture 输入哈希 |
pnpm fixtures:hash:sync | 更新 fixture 输入哈希 |
pnpm vet | 运行 go vet |
pnpm lint:arch | 架构 lint(文件大小、旧式模式) |
运行特定测试
# Single package
go test ./loop
# Single test
go test ./loop -run TestLoopDirectoryFixtures
# Bypass cache
go test -count=1 ./parse
# With race detector
go test -race ./...
# Verbose
go test -v ./tui
集成测试
长时间运行或依赖外部资源的测试使用 testing.Short():
if testing.Short() {
t.Skip("skipping integration test in short mode")
}
pnpm test:short 会跳过这些测试。pnpm test 会运行所有测试。
评论
支持 Markdown