关于 generate-test-cases
用于分析指定方法、类或代码目标并生成测试用例描述的技能,不会编写测试代码。它要求 Agent 检查依赖和现有测试,再围绕相关行为与代码分支列出用例。
主要功能
- 01分析目标代码及其依赖
- 02检查现有测试的覆盖缺口
- 03考虑成功与异常路径
- 04按 Given/When/Then 输出用例
- 05仅生成描述,不写测试代码
适用场景
- 01为类或方法规划测试
- 02发现现有测试中的行为覆盖缺口
- 03编写测试代码前准备用例清单
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mavka-ai/ unit-tests-skills --skill generate-test-cases安装后在 Claude Code 中输入/generate-test-cases确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
rules/general/cleanly-create-test-data.mdcode-context-analysis.mdexisting-test-awareness.mdgeneral-principles.mdkeep-cause-effect-clear.mdkeep-tests-focused.mdnaming-conventions.mdno-logic-in-tests.mdprefer-public-apis.mdtechnology-stack-detection.mdtest-behaviors-not-methods.mdtest-case-generation-strategy.mdverify-relevant-arguments-only.mdwhat-makes-good-test.md详细介绍
生成测试用例技能
分析代码,并为指定的方法/类生成应编写的测试用例列表。此技能仅输出测试用例描述,不会生成实际的测试代码。
要分析的目标: $ARGUMENTS
质量标准
- 请花时间在列出测试用例前彻底分析代码。
- 质量比速度更重要——仔细阅读所有相关源文件和规则。
- 不要跳过依赖类。了解完整上下文才能生成更好的测试用例。
说明
步骤 1:阅读规则并分析上下文
- 阅读规则:查看
./rules/general/目录中的规则(参见下方的“规则参考”) - 阅读目标:阅读上面指定的目标源文件/类/方法
- 阅读依赖项:按照
code-context-analysis规则中的说明,沿着导入关系阅读目标引用的 DTO、实体、枚举及其他类型 - 检查现有测试:按照
existing-test-awareness规则中的说明,查找覆盖此目标的现有测试类——如果找到,请完整阅读,并仅关注尚未覆盖的行为
步骤 2:生成测试用例
- 分析所有代码分支,包括:
- 成功路径
- 错误/异常路径
- 验证逻辑
- 目标调用的私有/受保护方法
- 安全注解(如果存在)
- 严格遵循 INCLUDE/EXCLUDE 规则
- 按指定格式输出测试用例列表
- 描述到此为止——此列表就是本技能的交付内容
- 结尾注明下一步:
generate-tests <target>会将此列表作为计划,并据此编写代码。将列表原样传递,用户可以先审阅或修改
输出格式
对于每个测试用例,请提供:
## Test Cases for {ClassName}.{methodName}
### 1. {testMethodName}
- **Given:** {preconditions/input state}
- **When:** {action being tested}
- **Then:** {expected outcome}
- **Code branch:** {which code path this covers}
### 2. {testMethodName}
...
命名约定
测试方法名称格式:{testedMethod}_{givenState}_{expectedOutcome}
示例:
calculateTotal_validProducts_returnsSumcalculateTotal_emptyList_throwsIllegalArgumentExceptiongetUser_unauthorized_returns401getUser_forbidden_returns403
故障排查
未找到目标文件
如果指定的目标不存在,请告知用户你搜索的确切路径,并请求澄清。
不支持的语言
如果目标代码所用语言没有专门规则,则仅应用通用规则并告知用户。
所有行为均已覆盖
如果现有测试类已覆盖所有已识别的行为,请输出摘要,说明覆盖已完整,并列出已测试的内容。不要为了证明分析合理而编造额外的测试用例。
示例
User says: "/generate-test-cases src/main/java/com/example/service/OrderService.java"
Step 1: Agent reads rules, reads OrderService.java, reads OrderRequest.java,
Order.java (dependencies), checks for existing OrderServiceTest.java.
Step 2: Agent outputs:
## Test Cases for OrderService.createOrder
### 1. createOrder_validRequest_savesAndReturnsOrder
- **Given:** Valid OrderRequest with productId "product-1" and quantity 5
- **When:** createOrder is called
- **Then:** Order is saved to repository and returned with generated ID
- **Code branch:** Success path
### 2. createOrder_nullProductId_throwsIllegalArgumentException
- **Given:** OrderRequest with null productId
- **When:** createOrder is called
- **Then:** IllegalArgumentException is thrown
- **Code branch:** Validation — productId null check
...
规则参考
重要:生成测试用例前,必须阅读并应用以下文件中的所有规则:
维护说明:
./rules/general/中的通用规则与generate-tests技能共享(该技能在rules/tests/general/中有副本)。更新规则时,请确保两个位置保持同步。
通用规则(始终适用)
./rules/general/test-case-generation-strategy.md- 测试用例的纳入/排除标准./rules/general/naming-conventions.md- 测试命名格式./rules/general/general-principles.md- 核心测试原则./rules/general/what-makes-good-test.md- 清晰、完整、简洁、稳健./rules/general/keep-tests-focused.md- 每个测试只覆盖一种场景./rules/general/test-behaviors-not-methods.md- 针对不同行为编写独立测试./rules/general/prefer-public-apis.md- 优先测试公共 API,而非私有方法./rules/general/cleanly-create-test-data.md- 使用辅助函数和构建器创建测试数据./rules/general/keep-cause-effect-clear.md- 让效果紧随原因发生./rules/general/no-logic-in-tests.md- KISS > DRY,避免在断言中加入逻辑./rules/general/technology-stack-detection.md- 检测语言和框架./rules/general/verify-relevant-arguments-only.md- 只验证相关的模拟参数./rules/general/existing-test-awareness.md- 检查是否已有测试,避免重复./rules/general/code-context-analysis.md- 分析前先阅读依赖项
评论
支持 Markdown