关于 testing
面向 Claude-Craft 多种技术栈的测试技能,介绍 TDD/BDD 原则、质量目标及测试策略。
主要功能
- 01RED–GREEN–REFACTOR TDD 循环
- 02覆盖率与测试金字塔目标
- 03变异测试与基于属性的测试
- 04按技术栈推荐工具
- 05浏览器与单体仓库测试指南
适用场景
- 01为新功能规划测试套件
- 02为技术栈选择测试工具
- 03通过覆盖率以外的指标评估测试质量
- 04在单体仓库中组织浏览器测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill testing安装后在 Claude Code 中输入/testing确认已加载。
附带文件README.mdREFERENCE.md
详细介绍
测试 - TDD/BDD 原则(2026)
适用于 Claude-Craft 框架所有技术栈的通用测试原则。
基本原则
- TDD 循环:RED → GREEN → REFACTOR
- 目标覆盖率:>= 80%
- 测试金字塔:单元测试(70%)> 集成测试(20%)> E2E 测试(10%)
- 模式:Arrange-Act-Assert(AAA)
- 命名:使用能说明行为的描述性测试名称
2026 年推荐工具
| 技术栈 | 单元测试/组件测试 | E2E/浏览器 | 变异测试 |
|---|---|---|---|
| JS/TS/React | Vitest 4.1+(Browser Mode 稳定版) | Playwright | Stryker |
| PHP/Laravel/Symfony | Pest 4.5+(PHPUnit 12,浏览器测试) | 通过 Pest 使用 Playwright | Infection |
| Python | pytest 8.x + Ruff 0.8+ | Playwright | Mutmut |
| Flutter | flutter_test + bloc_test 10+ | Patrol 3.13+ | 内置 |
| React Native | RNTL + Jest | Detox/Maestro | Stryker |
来源: Vitest 4、Pest 4、Stryker Mutator
2026 年策略
Vitest 4 — Browser Mode 稳定版
弃用臃肿的 JSDOM。使用原生 Chromium/Firefox/WebKit。
// vitest.config.ts
export default defineConfig({
test: {
browser: {
enabled: true,
name: 'chromium', // ou 'firefox', 'webkit'
provider: 'playwright',
},
},
});
变异测试 —“覆盖率会骗人,变异分数才说明真相”
测试测试的质量。变异分数 >= 80%。
# Stryker (JS/TS/C#)
npx stryker run
# Infection (PHP)
vendor/bin/infection --min-msi=80
# Mutmut (Python)
mutmut run
来源: Stryker Mutator
基于属性的测试
根据不变属性生成测试。
// fast-check (JS/TS)
import fc from 'fast-check';
test('sorting preserves all elements', () => {
fc.assert(
fc.property(fc.array(fc.integer()), (arr) => {
const sorted = [...arr].sort();
return sorted.length === arr.length;
})
);
});
来源: fast-check
Pest 4 — 集成式浏览器测试
// Pest 4.5+ avec Playwright natif
test('user can login', function () {
$this->browse(function (Browser $browser) {
$browser->visit('/login')
->type('email', '[email protected]')
->type('password', 'secret')
->press('Login')
->assertPathIs('/dashboard');
});
});
来源: Pest 4 浏览器测试
Vitest Workspaces — 单体仓库
// vitest.workspace.ts
export default defineWorkspace([
'packages/*/vitest.config.ts', // Unit tests
{
test: {
browser: { enabled: true, name: 'chromium' },
include: ['e2e/**/*.test.ts'],
},
}, // Browser tests
]);
完整文档请参阅 @.claude/references/base/testing.md。
评论
支持 Markdown