npx skills add https://github.com/0xdarkmatter/claude-mods --skill testgen通过自动框架检测、专家代理路由和项目规范匹配,生成全面的测试。
testgen <target> [--type] [--focus] [--depth]
│
├─→ 步骤 1: 分析目标
│ ├─ 文件存在? → 读取并解析
│ ├─ 指定了函数? → 提取签名
│ ├─ 目录? → 列出源文件
│ └─ 查找现有测试(避免重复)
│
├─→ 步骤 2: 检测框架(并行)
│ ├─ package.json → jest/vitest/mocha/cypress/playwright
│ ├─ pyproject.toml → pytest/unittest
│ ├─ go.mod → go test
│ ├─ Cargo.toml → cargo test
│ ├─ composer.json → phpunit/pest
│ └─ 检查现有测试模式
│
├─→ 步骤 3: 加载项目标准
│ ├─ AGENTS.md, CLAUDE.md 规范
│ ├─ 现有测试文件结构
│ └─ 命名约定(*.test.ts 与 *.spec.ts)
│
├─→ 步骤 4: 路由到专家代理
│ ├─ .ts → typescript-expert
│ ├─ .tsx/.jsx → react-expert
│ ├─ .vue → vue-expert
│ ├─ .py → python-expert
│ ├─ .go → go-expert
│ ├─ .rs → rust-expert
│ ├─ .php → laravel-expert
│ ├─ E2E/Cypress → cypress-expert
│ ├─ Playwright → typescript-expert
│ ├─ --visual → Chrome DevTools MCP
│ └─ 多文件 → 并行专家分派
│
├─→ 步骤 5: 生成测试
│ ├─ 在正确位置创建测试文件
│ ├─ 遵循检测到的约定
│ └─ 包含:正常路径、边界情况、错误处理
│
└─→ 步骤 6: 集成
├─ 自动创建任务(TaskCreate)以进行验证
└─ 建议:运行测试、/review、/save
# 检查目标是否存在
test -f "$TARGET" && echo "FILE" || test -d "$TARGET" && echo "DIRECTORY"
# 对于特定函数:提取签名
command -v ast-grep >/dev/null 2>&1 && ast-grep -p "function $FUNCTION_NAME" "$FILE"
# 回退到 ripgrep
rg "(?:function|const|def|public|private)\s+$FUNCTION_NAME" "$FILE" -A 10
Generate comprehensive tests with automatic framework detection, expert agent routing, and project convention matching.
testgen <target> [--type] [--focus] [--depth]
│
├─→ Step 1: Analyze Target
│ ├─ File exists? → Read and parse
│ ├─ Function specified? → Extract signature
│ ├─ Directory? → List source files
│ └─ Find existing tests (avoid duplicates)
│
├─→ Step 2: Detect Framework (parallel)
│ ├─ package.json → jest/vitest/mocha/cypress/playwright
│ ├─ pyproject.toml → pytest/unittest
│ ├─ go.mod → go test
│ ├─ Cargo.toml → cargo test
│ ├─ composer.json → phpunit/pest
│ └─ Check existing test patterns
│
├─→ Step 3: Load Project Standards
│ ├─ AGENTS.md, CLAUDE.md conventions
│ ├─ Existing test file structure
│ └─ Naming conventions (*.test.ts vs *.spec.ts)
│
├─→ Step 4: Route to Expert Agent
│ ├─ .ts → typescript-expert
│ ├─ .tsx/.jsx → react-expert
│ ├─ .vue → vue-expert
│ ├─ .py → python-expert
│ ├─ .go → go-expert
│ ├─ .rs → rust-expert
│ ├─ .php → laravel-expert
│ ├─ E2E/Cypress → cypress-expert
│ ├─ Playwright → typescript-expert
│ ├─ --visual → Chrome DevTools MCP
│ └─ Multi-file → parallel expert dispatch
│
├─→ Step 5: Generate Tests
│ ├─ Create test file in correct location
│ ├─ Follow detected conventions
│ └─ Include: happy path, edge cases, error handling
│
└─→ Step 6: Integration
├─ Auto-create task (TaskCreate) for verification
└─ Suggest: run tests, /review, /save
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
检查现有测试:
fd -e test.ts -e spec.ts -e test.js -e spec.js | rg "$BASENAME"
fd "test_*.py" | rg "$BASENAME"
JavaScript/TypeScript:
cat package.json 2>/dev/null | jq -r '.devDependencies | keys[]' | grep -E 'jest|vitest|mocha|cypress|playwright|@testing-library'
Python:
grep -E "pytest|unittest|nose" pyproject.toml setup.py requirements*.txt 2>/dev/null
Go:
test -f go.mod && echo "go test available"
Rust:
test -f Cargo.toml && echo "cargo test available"
PHP:
cat composer.json 2>/dev/null | jq -r '.["require-dev"] | keys[]' | grep -E 'phpunit|pest|codeception'
# Claude Code 规范
cat AGENTS.md 2>/dev/null | head -50
cat CLAUDE.md 2>/dev/null | head -50
# 测试配置文件
cat jest.config.* vitest.config.* pytest.ini pyproject.toml 2>/dev/null | head -30
测试位置约定:
# JavaScript
src/utils/helper.ts → src/utils/__tests__/helper.test.ts # __tests__ 文件夹
→ src/utils/helper.test.ts # 同位置
→ tests/utils/helper.test.ts # 单独的 tests/
# Python
app/utils/helper.py → tests/test_helper.py # tests/ 文件夹
→ tests/utils/test_helper.py # 镜像结构
# Go
pkg/auth/token.go → pkg/auth/token_test.go # 同位置(必需)
# Rust
src/auth.rs → src/auth.rs (mod tests { ... }) # 内联测试
→ tests/auth_test.rs # 集成测试
| 文件模式 | 主要专家 | 次要专家 |
|---|---|---|
*.ts | typescript-expert | - |
*.tsx, *.jsx | react-expert | typescript-expert |
*.vue | vue-expert | typescript-expert |
*.py | python-expert | - |
*.go | go-expert | - |
*.rs | rust-expert | - |
*.php | laravel-expert | - |
*.cy.ts, cypress/* | cypress-expert | - |
*.spec.ts (Playwright) | typescript-expert | - |
playwright/*, e2e/* | typescript-expert | - |
*.sh, *.bash | bash-expert | - |
| (--visual flag) | Chrome DevTools MCP | typescript-expert |
通过 Task 工具调用:
Task tool with subagent_type: "[detected]-expert"
Prompt includes:
- Source file content
- Function signatures to test
- Detected framework and conventions
- Requested test type and focus
基于 --focus 的测试类别:
| Focus | 生成内容 |
|---|---|
happy | 正常输入,预期输出 |
edge | 边界值、空输入、null |
error | 无效输入、异常、错误处理 |
all | 以上所有(默认) |
深度级别:
| Depth | 覆盖率 |
|---|---|
quick | 仅正常路径,每个函数 1-2 个测试 |
normal | 正常路径 + 常见边界情况(默认) |
thorough | 全面:所有路径、模拟、异步 |
自动创建任务:
TaskCreate:
subject: "Run generated tests for src/auth.ts"
description: "Verify generated tests pass and review edge cases"
activeForm: "Running generated tests for auth.ts"
建议后续步骤:
Tests generated: src/auth.test.ts
Next steps:
1. Run tests: npm test src/auth.test.ts
2. Review and refine edge cases
3. Use /save to persist tasks across sessions
[]struct 模式)testing.T 和子测试(t.Run)testing.B)t.Parallel())#[test] 属性函数#[cfg(test)] 模块组织#[should_panic] 用于错误测试| 工具 | 用途 | 回退方案 |
|---|---|---|
jq | 解析 package.json | Read 工具 |
rg | 查找现有测试 | Grep 工具 |
ast-grep | 解析函数签名 | ripgrep 模式 |
fd | 查找测试文件 | Glob 工具 |
| Chrome DevTools MCP | 视觉测试(--visual) | Playwright/Cypress |
优雅降级:
command -v jq >/dev/null 2>&1 && cat package.json | jq '.devDependencies' || cat package.json
有关特定框架的代码示例,请参阅:
frameworks.md - 所有支持语言的完整测试示例visual-testing.md - 用于 --visual 标志的 Chrome DevTools 集成| 命令 | 关系 |
|---|---|
/review | 在提交前审查生成的测试 |
/explain | 在测试前理解复杂代码 |
/save | 跟踪测试覆盖率目标 |
每周安装数
18
仓库
GitHub 星标数
8
首次出现
2026年1月25日
安全审计
安装于
opencode18
gemini-cli18
claude-code17
codex17
cursor15
antigravity14
# Check if target exists
test -f "$TARGET" && echo "FILE" || test -d "$TARGET" && echo "DIRECTORY"
# For function-specific: extract signature
command -v ast-grep >/dev/null 2>&1 && ast-grep -p "function $FUNCTION_NAME" "$FILE"
# Fallback to ripgrep
rg "(?:function|const|def|public|private)\s+$FUNCTION_NAME" "$FILE" -A 10
Check for existing tests:
fd -e test.ts -e spec.ts -e test.js -e spec.js | rg "$BASENAME"
fd "test_*.py" | rg "$BASENAME"
JavaScript/TypeScript:
cat package.json 2>/dev/null | jq -r '.devDependencies | keys[]' | grep -E 'jest|vitest|mocha|cypress|playwright|@testing-library'
Python:
grep -E "pytest|unittest|nose" pyproject.toml setup.py requirements*.txt 2>/dev/null
Go:
test -f go.mod && echo "go test available"
Rust:
test -f Cargo.toml && echo "cargo test available"
PHP:
cat composer.json 2>/dev/null | jq -r '.["require-dev"] | keys[]' | grep -E 'phpunit|pest|codeception'
# Claude Code conventions
cat AGENTS.md 2>/dev/null | head -50
cat CLAUDE.md 2>/dev/null | head -50
# Test config files
cat jest.config.* vitest.config.* pytest.ini pyproject.toml 2>/dev/null | head -30
Test location conventions:
# JavaScript
src/utils/helper.ts → src/utils/__tests__/helper.test.ts # __tests__ folder
→ src/utils/helper.test.ts # co-located
→ tests/utils/helper.test.ts # separate tests/
# Python
app/utils/helper.py → tests/test_helper.py # tests/ folder
→ tests/utils/test_helper.py # mirror structure
# Go
pkg/auth/token.go → pkg/auth/token_test.go # co-located (required)
# Rust
src/auth.rs → src/auth.rs (mod tests { ... }) # inline tests
→ tests/auth_test.rs # integration tests
| File Pattern | Primary Expert | Secondary |
|---|---|---|
*.ts | typescript-expert | - |
*.tsx, *.jsx | react-expert | typescript-expert |
*.vue | vue-expert | typescript-expert |
*.py | python-expert | - |
*.go | go-expert | - |
*.rs | rust-expert | - |
*.php | laravel-expert | - |
*.cy.ts, cypress/* | cypress-expert | - |
*.spec.ts (Playwright) | typescript-expert | - |
playwright/*, e2e/* | typescript-expert | - |
*.sh, *.bash | bash-expert | - |
| (--visual flag) | Chrome DevTools MCP | typescript-expert |
Invoke via Task tool:
Task tool with subagent_type: "[detected]-expert"
Prompt includes:
- Source file content
- Function signatures to test
- Detected framework and conventions
- Requested test type and focus
Test categories based on --focus:
| Focus | What to Generate |
|---|---|
happy | Normal input, expected output |
edge | Boundary values, empty inputs, nulls |
error | Invalid inputs, exceptions, error handling |
all | All of the above (default) |
Depth levels:
| Depth | Coverage |
|---|---|
quick | Happy path only, 1-2 tests per function |
normal | Happy + common edge cases (default) |
thorough | Comprehensive: all paths, mocking, async |
Auto-create task:
TaskCreate:
subject: "Run generated tests for src/auth.ts"
description: "Verify generated tests pass and review edge cases"
activeForm: "Running generated tests for auth.ts"
Suggest next steps:
Tests generated: src/auth.test.ts
Next steps:
1. Run tests: npm test src/auth.test.ts
2. Review and refine edge cases
3. Use /save to persist tasks across sessions
[]struct pattern)testing.T and subtests (t.Run)testing.B)t.Parallel())#[test] attribute functions#[cfg(test)] module organization#[should_panic] for error testing| Tool | Purpose | Fallback |
|---|---|---|
jq | Parse package.json | Read tool |
rg | Find existing tests | Grep tool |
ast-grep | Parse function signatures | ripgrep patterns |
fd | Find test files | Glob tool |
| Chrome DevTools MCP | Visual testing (--visual) | Playwright/Cypress |
Graceful degradation:
command -v jq >/dev/null 2>&1 && cat package.json | jq '.devDependencies' || cat package.json
For framework-specific code examples, see:
frameworks.md - Complete test examples for all supported languagesvisual-testing.md - Chrome DevTools integration for --visual flag| Command | Relationship |
|---|---|
/review | Review generated tests before committing |
/explain | Understand complex code before testing |
/save | Track test coverage goals |
Weekly Installs
18
Repository
GitHub Stars
8
First Seen
Jan 25, 2026
Security Audits
Installed on
opencode18
gemini-cli18
claude-code17
codex17
cursor15
antigravity14
React Router 框架模式指南:全栈开发、文件路由、数据加载与渲染策略
1,200 周安装