完美自动生成单元测试SKILL

Unit Test Generator

一个 Claude Code Skill,自动化生成 Java 项目的单元测试,并通过 JaCoCo 驱动迭代,直到达到 100% 代码覆盖率

✨ 功能特性

  • 🔄 自动化迭代 --- 自动生成测试 → 执行 → 测量覆盖率 → 分析缺口 → 补充测试,循环直到全部达标
  • 📊 JaCoCo 驱动 --- 内置 JaCoCo 0.8.15,使用 CLI 精确测量行/分支/方法/类覆盖率
  • 🛡️ 生产代码保护 --- 绝不修改生产代码来提高覆盖率,只通过测试本身达成目标
  • 质量保障 --- 测试必须包含有意义的断言,验证预期行为、异常行为和边界条件
  • 🚫 零假设 --- 不允许假设测试通过,不允许假设覆盖率,一切以实际执行和测量为准

📋 覆盖率目标

指标 目标
行覆盖率 (Line) 100%
分支覆盖率 (Branch) 100%
方法覆盖率 (Method) 100%
类覆盖率 (Class) 100%

🔧 工作流程

text 复制代码
┌─────────────────┐
│   生成单元测试   │
└────────┬────────┘
         ▼
┌─────────────────┐
│   执行 mvn test  │
└────────┬────────┘
         ▼
┌─────────────────┐
│  生成 JaCoCo     │
│  覆盖率报告      │
└────────┬────────┘
         ▼
┌─────────────────┐
│  分析覆盖率缺口  │
└────────┬────────┘
         ▼
┌─────────────────┐        ┌──────────────┐
│  覆盖率是否达标? │──否─▶│  补充测试用例 │──┐
└────────┬────────┘        └──────────────┘   │
         │是                                  │
         ▼                                    │
┌─────────────────┐                           │
│    任务完成 ✅   │    ◀────────────────────┘
└─────────────────┘         继续迭代

🚀 使用方式

前置条件

依赖 说明
JDK 需要 Java 开发环境(运行 javacmvnjava -jar
Apache Maven 使用 mvn test 作为测试执行命令
Java 项目 目标项目需具备标准 Maven 结构(src/main/javatarget/classes

安装 Skill

将本项目放置到 Claude Code 的 skills 目录:

bash 复制代码
# 通常位于
~/.claude/skills/unit-test-generator/unit-test-generator/

触发使用

在 Claude Code 中对任意 Java/Maven 项目使用此 Skill,Claude 将自动:

  1. 分析项目源代码结构
  2. 生成全面的单元测试
  3. 执行 mvn test 验证测试通过
  4. 使用内置 JaCoCo CLI 生成覆盖率报告
  5. 检查报告,定位未覆盖的代码
  6. 循环补充测试直到四项覆盖率指标均达到 100%

📁 项目结构

text 复制代码
unit-test-generator/
├── SKILL.md                    # Skill 核心规则定义
├── README.md                   # 项目说明文档
├── LICENSE                     # MIT 许可证
└── jacoco-0.8.15/              # 内置 JaCoCo 0.8.15 发行版
    ├── lib/
    │   ├── jacococli.jar       # CLI 工具(用于生成覆盖率报告)
    │   ├── jacocoagent.jar     # Java Agent(运行时插桩)
    │   └── ...
    ├── doc/                    # API 文档和示例
    └── coverage/               # 示例覆盖率报告

⚙️ 核心规则

规则 说明
强制执行 生成测试后必须实际运行,不允许假设通过
强制覆盖率验证 必须使用 JaCoCo 测量覆盖率,不允许假设
强制 JaCoCo 来源 只能使用内置的 jacoco-0.8.15/,禁止下载其他版本
强制迭代 未达标前禁止停止,必须持续循环
禁止完成声明 存在任何未覆盖的行/分支/方法/类时禁止声称完成
生产代码保护 禁止通过修改生产代码来提高覆盖率
测试质量 测试必须有实际意义,不能只为凑覆盖率

📊 实际效果展示

CodeWeave 项目上的测试结果:

测试总览

指标 覆盖率 详情
方法覆盖 100% (97/97) ✅ 所有方法均已覆盖
行覆盖 99.9% (1043/1044) ✅ 仅 1 行未覆盖(死代码)
指令覆盖 99.7% (4722/4738)
分支覆盖 89.8% (176/196) 未覆盖分支均为死代码/防御性检查
  • 总测试数: 118 个,全部通过 ✅
  • 测试文件: 12 个测试类

各类覆盖详情

方法 指令 分支
AnalysisController 100% 100% 100% 100%
AnalysisService 100% 100% 100% 100%
ClassAnalyzer 100% 99.5% 98.8% 88.2%
ClassInfo 100% 100% 100% 100%
ProjectScanner 100% 100% 100% 95.5%
RelationInfo 100% 100% 100% 100%
GraphData 100% 100% 99.6% 86.4%
HtmlGenerator 100% 100% 100% 100%
AnalysisRequest 100% 100% 100% 100%
AnalysisResponse 100% 100% 100% 100%
WebConfig 100% 100% 100% 100%
CodeWeaveApplication 100% 100% 100% 100%

生成的测试文件

text 复制代码
src/test/java/com/codeweave/
├── CodeWeaveApplicationTest.java          (2 tests)
├── analyzer/
│   ├── ClassAnalyzerTest.java             (53 tests)
│   ├── ClassInfoTest.java                 (8 tests)
│   ├── ProjectScannerTest.java            (10 tests)
│   └── RelationInfoTest.java              (2 tests)
├── config/
│   └── WebConfigTest.java                 (1 test)
├── controller/
│   └── AnalysisControllerTest.java        (8 tests)
├── generator/
│   ├── GraphDataTest.java                 (12 tests)
│   └── HtmlGeneratorTest.java             (4 tests)
├── model/
│   ├── AnalysisRequestTest.java           (2 tests)
│   └── AnalysisResponseTest.java          (2 tests)
└── service/
    └── AnalysisServiceTest.java           (9 tests)

📜 许可证

MIT License © 2026 Tycoon-HJ

github:项目地址

相关推荐
暗冰ཏོ10 小时前
软件测试完整学习指南:从入门到自动化、性能与安全测试实战
软件测试·功能测试·单元测试·集成测试·压力测试·测试·安全性测试
汽车仪器仪表相关领域12 小时前
南华 NHASM-1 型稳态工况法汽车排气检测系统|国标合规汽油车工况检测专用设备
功能测试·安全·单元测试·汽车·压力测试·可用性测试
AI浩14 小时前
指令微调与对齐技术:SFT、RLHF、DPO、RLAIF 与 RLVR(分层式精讲)
log4j
有浔则灵1 天前
从零开始构建 AI Agent(一):理解 Eino 的 Component 抽象与流式对话
人工智能·log4j
全栈人月1 天前
使用 Kilo Code 解决遗留代码恐惧症
人工智能·单元测试·代码规范
阿狸猿2 天前
论单元测试方法及应用
单元测试
凤年徐2 天前
保姆级教程:用Cline+DeepSeek打造本地AI编程助手
log4j·ai编程
Full Stack Developme2 天前
Spring Bean 依赖注入
python·spring·log4j
折哥的程序人生 · 物流技术专研2 天前
【电商多平台电子面单对接实战|第二篇】抖音代发电子面单对接:从“面条代码”到整洁架构的涅槃之路
设计模式·架构·系统架构·单元测试·代码规范·单一职责原则