java-unit-testlisted
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) 测试数据构建规范
- 优先使用