用途
testing-patterns 是一个统一测试模式的技能,目标是在不同测试框架之间提供一致的测试结构、命名方式和最佳实践。它整合了三类测试知识:test-writer 技能、tester 智能体模式以及各框架专属的测试写法。
该技能的 Skill ID 为 testing-patterns,优先级 50,在检测到测试任务时会自动调用。其触发条件包括:测试关键词(test、spec、coverage、mock、fixture、TDD)、测试文件模式(.test.ts、.spec.ts、test.go、test.py)以及命令(/test:unit、/test:e2e、/test:coverage)。
主要能力
通用测试原则
技能列出八项通用原则:采用 AAA 模式(Arrange → Act → Assert,每个测试都遵循);每个测试只做一个逻辑断言;使用描述性命名("should [action] when [condition]");测试中不写条件逻辑;测试相互隔离、不共享状态;单元测试保持快速(每个 <100ms);结果确定、可重复;测试行为而非实现细节。
测试类型划分
技能将测试分为四类:单元测试(单个函数/类,<100ms,占测试的 80%)、集成测试(多个单元组合,<1s,适用于 API 端点与数据库查询)、E2E 测试(完整用户流程,<30s,仅关键路径)、快照测试(UI 输出比对,<500ms,用于组件渲染)。
框架检测
技能根据框架特征文件识别测试基础设施并给出对应的运行器与断言方式:Jest(jest.config.js 或 package.json 中的 jest,npx jest,expect())、Vitest(vitest.config.ts,npx vitest,expect())、Pytest(pytest.ini 或 conftest.py,pytest,assert)、PHPUnit(phpunit.xml,./vendor/bin/phpunit,$this->assert*)、Go(_test.go 文件,go test,t.Error/t.Fatal)、RSpec(spec/ 目录加 Gemfile,bundle exec rspec,expect().to)、Cypress(cypress.config.ts,npx cypress,cy.)、Detox(.detoxrc.js,detox test,expect(element))。
测试文件结构示例
资料给出了 JavaScript/TypeScript(Jest/Vitest)、Python(Pytest)、PHP(PHPUnit)和 Go 四种语言的完整测试文件结构示例,均按 AAA 模式组织,并演示了正常路径与异常路径(如无效邮箱抛出错误)的写法。
模拟模式
技能归纳五类模拟模式:Spy(跟踪调用但不改变行为)、Stub(替换为固定返回值)、Mock(替换为自定义实现)、Fake(内存实现)、Fixture(预定义测试数据),并给出 Vitest 的模块模拟与方法监听示例。
覆盖率目标
技能按行、分支、函数、语句四个维度给出最低、良好、优秀三档目标:行覆盖率 70%/80%/90%,分支 60%/70%/80%,函数 80%/90%/95%,语句 70%/80%/90%。
TDD 工作流
TDD 流程为:RED(先写失败测试)→ GREEN(写最少代码使其通过)→ REFACTOR(改进代码质量)→ 对下一需求重复。规则包括:没有失败测试就不写生产代码;只写刚好失败的测试(编译失败也算);只写刚好让测试通过的代码。
E2E 测试模式
资料提供 Cypress(Web)和 Detox(移动端)的登录流程示例,均使用 data-testid 或 id 定位元素并断言跳转与可见性。
命名约定与反模式
技能列出四种命名格式:should_when(行为描述)、method_scenario_result(方法导向)、given_when_then(BDD 风格)、test_method(Python/PHP 风格)。同时列出六类应避免的反模式:测试实现细节(重构即碎)、共享状态(测试互相影响)、sleep/延迟(慢且不稳定)、过度模拟(不反映现实)、巨型测试(难以定位失败)、无断言(测试永远通过),并给出对应解决方式。
使用方式
技能在检测到测试任务时自动触发,并可根据检测到的测试框架加载对应模式:通过 getCachedDetection() 获取缓存检测结果,若存在 testInfra,则调用 loadPatterns('testing', detection.testInfra.framework) 加载相应框架的模式。相关资料还关联了 skills/test-writer/SKILL.md、agents/tester.md、rules/core/tdd-workflow.md 以及 commands/test/unit.md、commands/test/e2e.md 等文件。
适用场景与限制
该技能适用于需要跨多种测试框架保持测试风格一致的项目,尤其适合多人协作、需要统一测试规范的代码库,以及采用 TDD 流程的团队。资料中未说明其支持的框架版本范围、安装方式或具体收费模式,这些信息暂未提供。