mcpField
G
generate-test-cases

generate-test-cases

github.com/mavka-ai测试与质量70228 次安装5 周前更新
代码仓库

关于 generate-test-cases

用于分析指定方法、类或代码目标并生成测试用例描述的技能,不会编写测试代码。它要求 Agent 检查依赖和现有测试,再围绕相关行为与代码分支列出用例。

主要功能

  1. 01分析目标代码及其依赖
  2. 02检查现有测试的覆盖缺口
  3. 03考虑成功与异常路径
  4. 04按 Given/When/Then 输出用例
  5. 05仅生成描述,不写测试代码

适用场景

  1. 01为类或方法规划测试
  2. 02发现现有测试中的行为覆盖缺口
  3. 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.md
code-context-analysis.md
existing-test-awareness.md
general-principles.md
keep-cause-effect-clear.md
keep-tests-focused.md
naming-conventions.md
no-logic-in-tests.md
prefer-public-apis.md
technology-stack-detection.md
test-behaviors-not-methods.md
test-case-generation-strategy.md
verify-relevant-arguments-only.md
what-makes-good-test.md

详细介绍

生成测试用例技能

分析代码,并为指定的方法/类生成应编写的测试用例列表。此技能仅输出测试用例描述,不会生成实际的测试代码。

要分析的目标: $ARGUMENTS

质量标准

  • 请花时间在列出测试用例前彻底分析代码。
  • 质量比速度更重要——仔细阅读所有相关源文件和规则。
  • 不要跳过依赖类。了解完整上下文才能生成更好的测试用例。

说明

步骤 1:阅读规则并分析上下文
  1. 阅读规则:查看 ./rules/general/ 目录中的规则(参见下方的“规则参考”)
  2. 阅读目标:阅读上面指定的目标源文件/类/方法
  3. 阅读依赖项:按照 code-context-analysis 规则中的说明,沿着导入关系阅读目标引用的 DTO、实体、枚举及其他类型
  4. 检查现有测试:按照 existing-test-awareness 规则中的说明,查找覆盖此目标的现有测试类——如果找到,请完整阅读,并仅关注尚未覆盖的行为
步骤 2:生成测试用例
  1. 分析所有代码分支,包括:
    • 成功路径
    • 错误/异常路径
    • 验证逻辑
    • 目标调用的私有/受保护方法
    • 安全注解(如果存在)
  2. 严格遵循 INCLUDE/EXCLUDE 规则
  3. 按指定格式输出测试用例列表
  4. 描述到此为止——此列表就是本技能的交付内容
  5. 结尾注明下一步: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_returnsSum
  • calculateTotal_emptyList_throwsIllegalArgumentException
  • getUser_unauthorized_returns401
  • getUser_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