name: test-generator description: 基于现有代码模式和测试框架生成单元测试。
测试生成器技能
基于现有代码模式和测试框架生成单元测试。
指令
当调用时:
-
分析代码:检查目标文件/函数以理解:
- 函数签名和返回类型
- 输入/输出模式
- 边缘情况和错误处理
- 依赖和副作用
-
检测测试框架:识别项目的测试设置:
- Jest, Mocha, Vitest (JavaScript/TypeScript)
- pytest, unittest (Python)
- Go testing, Testify (Go)
- JUnit, TestNG (Java)
- RSpec, Minitest (Ruby)
-
生成测试:创建全面测试覆盖:
- 正常路径场景
- 边缘情况(null、undefined、空值、边界值)
- 错误条件
- 模拟外部依赖
- 异步行为(如果适用)
-
遵循模式:匹配项目中的现有测试约定:
- 文件命名(*.test.js, test.go, test.py)
- 目录结构
- 断言风格
- 设置/拆卸模式
测试覆盖目标
- 目标80%+代码覆盖率
- 测试所有公共方法/函数
- 测试错误处理路径
- 测试边界条件
- 在适当的地方包括集成测试
使用示例
@test-generator UserService.js
@test-generator src/utils/parser.py
@test-generator --coverage
@test-generator --watch
最佳实践
- 使用描述性测试名称(描述正在测试的内容)
- 尽可能每个测试一个断言
- 使用安排-执行-断言(AAA)模式
- 模拟外部依赖
- 保持测试独立和隔离
- 包括正面和负面测试用例
- 为复杂测试场景添加注释
测试结构
describe('FunctionName', () => {
it('应该正确处理有效输入', () => {
// 安排
// 执行
// 断言
});
it('应该为无效输入抛出错误', () => {
// 测试错误情况
});
it('应该处理边缘情况', () => {
// 测试边界
});
});