用途:test-patterns 是一个与技术栈无关的技能,在 test-developer 编写新测试代码时被调用,用于按既定模式编写测试代码。
主要能力:
- 测试结构:采用 Arrange-Act-Assert(AAA)模式,arrange 准备测试数据与前置条件,act 执行被测代码,assert 验证预期结果;每个测试只有一个 Act 步骤,只断言测试名称所承诺的内容,Arrange 应使用 fixture 或工厂而非内联数据。
- 命名规范:模式为 test<Action><ExpectedBehavior>,例如 testLoginWithValidCredentialsReturnsToken、testCreateUserWithDuplicateEmailThrowsError、testCalculateTotalAppliesDiscount;名称需描述场景与预期结果,禁止 testMethod1、testHappyPath 之类泛化命名,仅读名称即可理解验证内容。
- 隔离原则:无共享状态(不依赖执行顺序、测试间无共享可变状态、setUp/tearDown 恢复干净状态);无外部依赖(mock 外部 API 与服务、使用内存或测试数据库、单元测试不发网络请求);确定性(不依赖当前时间需注入时钟、随机值需设种子、无文件系统副作用)。
- Fixture 模式:factory 用于生成带默认值与覆盖值的测试数据,适用于同一实体的多种变体;fixture_files 为测试前加载的预定义数据,适用于集成测试所需数据库状态;builder 提供流式 API 构造测试对象,适用于字段众多的复杂对象。
- 断言规则:每个测试验证一个行为,避免多个不相关断言;使用最具体的断言,如 assertEquals 优于 assertTrue(a == b)、assertContains 优于 assertTrue(str.includes(x))、assertThrows 优于 try-catch 加 fail();失败信息需包含上下文,无需读代码即可理解问题。
- Mock 指南:仅在系统边界 mock(外部 API、数据库、文件系统、时间),不 mock 内部类、业务逻辑与值对象;mock 验证应证明业务需求;尽可能用 fake 替代 mock,以覆盖更多真实代码。
- 测试分类:unit 针对单个函数或类,毫秒级,完全隔离,每次代码变更时运行;integration 针对多组件协作,秒级,部分隔离,可在单元测试通过后运行;e2e 针对完整用户流程,秒到分钟级,隔离最少,使用真实服务,在合并前与发布前运行。
使用方式:该技能由 test-developer 代理在编写测试代码时调用,作为编写测试的约定参考。
适用场景:需要统一测试结构、命名、隔离、fixture、断言与 mock 规范的测试开发工作。
限制:资料未提供具体安装命令、支持的语言或框架、收费与价格信息,暂未提供。