← ClaudeAtlas

java-unit-testlisted

为 Java 项目生成自动化单元测试(JUnit 5 + Mockito)。当用户要求编写单元测试、生成测试用例或提升测试覆盖率时使用。
aiskillstore/marketplace · ★ 329 · Testing & QA · score 79
Install: claude install-skill aiskillstore/marketplace
# Java Unit Test Skill ## 触发条件 当用户提出以下需求时激活本技能(包含同义表达): - 帮我写单元测试 / 为这个类写测试 / 生成测试用例 - 提升测试覆盖率 / 补齐测试 / 覆盖率不达标 - junit test / mockito test / unit test ## 前置检查清单 在生成测试代码前,必须完成以下检查与信息收集(缺失则先补齐): ### 1) 识别被测类(SUT) - 读取被测类源文件与其直接依赖(构造参数、字段注入、静态依赖) - 记录包名、类名、可见性、构造方法、所有 public 方法签名 ### 2) 分析类结构与行为 - 逐个梳理 public 方法: - 入参、返回值、抛出异常 - 分支条件与边界值(null/空集合/0/负数/超长字符串等) - 外部交互:数据库/缓存/HTTP/RPC/文件/时间/随机数等 ### 3) 识别依赖与可 Mock 点 - 识别可替换依赖(接口/组件/DAO/Client),明确 Mock/Spy 的对象 - 标记不可 Mock 或较难 Mock 的点(static/final/private/new 出来的对象) ### 4) 确认测试工程与框架约束 - 确认项目使用的测试框架与版本(JUnit 4/5,Mockito,Spring Test 等) - 确认测试源码目录结构(例如:src/test/java 与包路径对齐) - 确认断言库与风格(JUnit Assertions / AssertJ / Hamcrest 等,优先跟随项目现状) ## 测试代码生成规范 ### 1) 测试类命名规范 - 测试类名:{被测类名}Test - 若存在多实现或多场景拆分:{被测类名}{场景}Test(例如:OrderServiceCreateTest) ### 2) Import 声明规范 - 按以下顺序组织 import: 1. java.* 2. javax.* 3. 第三方库(org.* / com.*) 4. 项目内部包 5. static import(断言、Mockito 静态方法) - 禁止未使用 import ### 3) 测试类结构模板 - 统一结构: - Mock 声明区 - 被测对象构建区(如 @InjectMocks 或手动 new) - 通用测试数据构建方法(可选) - 用例区:按被测方法分组 推荐的骨架(根据项目框架选择其一): 1) 纯 Mockito(优先): - @ExtendWith(MockitoExtension.class) - @Mock 依赖 - @InjectMocks 被测对象(或构造注入手动 new) 2) Spring 参与(仅当项目已有此风格且确有必要): - @SpringBootTest / @ExtendWith(SpringExtension.class) - @MockBean 替换外部依赖 ### 4) Mock 对象配置规范 - Mock 行为遵循 “最小必要” 原则:只 stub 当前用例需要的调用 - 对外部依赖交互必须验证(verify): - 是否被调用 - 调用次数(times / never) - 关键入参(ArgumentCaptor 或 eq) - 不要过度验证实现细节(避免脆弱测试) ### 5) 测试数据构建规范 - 优先使用