关于 ln-782-test-runner
面向项目测试的 Skill,可检测已配置的测试框架、执行测试套件,并返回结构化结果和可选覆盖率。适用于独立测试和 CI 测试步骤,不负责构建项目或编写、修复测试。
主要功能
- 01自动检测测试框架
- 02运行检测到的测试套件
- 03解析通过、失败、跳过数及耗时
- 04可选生成覆盖率报告
- 05返回含失败详情的结构化结果
- 06支持超时与并行执行选项
适用场景
- 01独立运行测试
- 02在 CI 流程中加入测试步骤
- 03在测试运行时收集覆盖率
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-782-test-runner安装后在 Claude Code 中输入/ln-782-test-runner确认已加载。
附带文件references/ci_tool_detection.mdreferences/monitor_integration_pattern.md
详细介绍
路径: 文件路径(
references/、../ln-*)均相对于此技能目录。
必须阅读: 加载 references/ci_tool_detection.md——测试框架注册表、精简标志(--tb=short -q、--reporter=json)以及规范化链。
ln-782-test-runner
类型: L3 Worker 类别: 7XX 项目引导
用途
检测测试框架,执行所有测试套件,并报告结果,包括通过/失败数量以及可选的覆盖率。
范围:
- 从项目配置中自动检测测试框架
- 为所有检测到的框架执行测试套件
- 解析测试输出,统计通过/失败数量
- 启用覆盖率时生成覆盖率报告
不在范围内:
- 构建项目(由 ln-781 处理)
- 容器操作(由 ln-783 处理)
- 编写或修复测试
使用时机
| 场景 | 使用此技能 |
|---|---|
| 可独立运行 | 是 |
| 独立执行测试 | 是 |
| CI/CD 流水线测试步骤 | 是 |
| 需要验证构建 | 否,使用 ln-781 |
工作流
步骤 1:检测测试框架
根据项目配置文件识别测试框架。
| 标记 | 测试框架 | 项目类型 |
|---|---|---|
| vitest.config.* | Vitest | Node.js |
| jest.config.* | Jest | Node.js |
| package.json 中的 *.test.ts | Vitest/Jest | Node.js |
| *.csproj 中的 xunit / nunit | xUnit/NUnit | .NET |
| pytest.ini / conftest.py | pytest | Python |
| *_test.go 文件 | go test | Go |
| 包含 Cargo.toml 的 tests/ | cargo test | Rust |
步骤 2:执行测试套件
为每个检测到的框架运行测试。
| 框架 | 执行策略 |
|---|---|
| Vitest | 使用 JSON reporter 以单次运行模式运行 |
| Jest | 使用 JSON 输出运行 |
| xUnit/NUnit | 使用 logger 获取结构化输出 |
| pytest | 使用 JSON 插件或详细输出运行 |
| go test | 使用 JSON 输出标志运行 |
| cargo test | 使用标准输出解析运行 |
步骤 3:解析结果
从框架输出中提取测试结果。
| 指标 | 说明 |
|---|---|
| total | 发现的测试总数 |
| passed | 成功完成的测试数 |
| failed | 断言失败的测试数 |
| skipped | 标记为跳过/忽略的测试数 |
| duration | 总执行时间 |
步骤 4:生成覆盖率(可选)
启用覆盖率时,收集覆盖率指标。
| 框架 | 覆盖率工具 |
|---|---|
| Vitest/Jest | c8 / istanbul |
| .NET | coverlet |
| pytest | pytest-cov |
| Go | go test -cover |
| Rust | cargo-tarpaulin |
覆盖率指标:
| 指标 | 说明 |
|---|---|
| linesCovered | 测试期间执行的代码行数 |
| linesTotal | 代码库中的总行数 |
| percentage | 覆盖率百分比 |
步骤 5:报告结果
向编排器返回结构化结果。
结果结构:
| 字段 | 说明 |
|---|---|
| suiteName | 测试套件标识符 |
| framework | 检测到的测试框架 |
| status | passed / failed / error |
| total | 测试总数 |
| passed | 通过的测试数 |
| failed | 失败的测试数 |
| skipped | 跳过的测试数 |
| duration | 执行时间(秒) |
| failures | 失败详情数组(测试名称、消息) |
| coverage | 覆盖率指标(如已启用) |
错误处理
| 错误类型 | 操作 |
|---|---|
| 未找到测试 | 报告警告,status = passed(0 个测试) |
| 测试超时 | 报告超时,并包含部分结果 |
| 框架错误 | 记录错误,报告为 error 状态 |
| 缺少依赖项 | 报告缺少的测试依赖项 |
选项
| 选项 | 默认值 | 说明 |
|---|---|---|
| skipTests | false | 未找到测试时跳过执行 |
| allowFailures | false | 即使测试失败也报告成功 |
| coverage | false | 生成覆盖率报告 |
| timeout | 300 | 最长执行时间(秒) |
| parallel | true | 尽可能并行运行测试套件 |
关键规则
- 运行所有检测到的测试套件——不要悄悄跳过任何套件
- 解析实际结果——不要只依赖退出代码
- 提供失败详情——提供可用于调试的具体信息
- 遵守超时设置——防止无限循环导致程序挂起
监控集成(Claude Code 2.1.98+)
**必须阅读:**加载 references/monitor_integration_pattern.md
对于预计运行时间超过 30 秒的测试套件,使用 Monitor 实时传输失败信息:
| 模式 | 命令 | timeout_ms |
|---|---|---|
| 传输失败信息 | {test_command} 2>&1 | grep --line-buffered -E 'FAIL|Error|✗|AssertionError' | timeout * 1000(来自 Options) |
| 完整输出 | {test_command} 2>&1 | timeout * 1000 |
立即响应首次失败,同时让其余测试继续运行。
备用方案:如果 Monitor 不可用(Bedrock/Vertex),使用 Bash(run_in_background=true)。
完成标准
- 检测到所有测试框架
- 执行所有测试套件
- 解析并整理测试结果
- 收集覆盖率数据(如已启用)
- 将结果返回给协调器
参考文件
- 上级目录:
../ln-780-bootstrap-verifier/SKILL.md
**版本:**2.0.0
**最后更新:**2026-01-10
评论
支持 Markdown