skills/clawhub.ai/java-unit-test

java-unit-test

Installation
SKILL.md

Java 单元测试

面向团队的单元测试规范对齐助手:统一"测什么、测多少、怎么设计、用什么默认"。规范分两部分——A. 设计方法(等价类/边界值/决策表/状态迁移)保证测得全;B. 工程默认值与纪律(断言库/Mock 边界/停止标准)保证每次一样。每条规则含「✗ 错误设计 → ✓ 正确设计」。

三条铁律

  1. 设计优先于编码:先确定"测哪些用例"(等价类/边界值/决策表/状态),再落成 @Test。禁止上来就写代码、想到哪测到哪——那是"覆盖率的幻觉",不是测试设计。
  2. 最小充分集:用等价类合并代表"无穷输入",用边界值钉住 off-by-one 高发区;穷尽测试不可能,目标是"用最少的用例覆盖最有代表性的输入"。一个方法的有效用例通常在 3~8 个之间,不是越多越好。
  3. 栈中立:测试框架跟随项目既有——JUnit 4 还是 5、Spring Boot 还是非 Spring,按项目现状走,不强加、不主动迁移。断言库默认见下方"断言库策略"。

断言库策略

默认用 JUnit 原生 AssertionsassertEquals/assertThrows/assertTrue 等)。仅当满足以下任一条件时,升级到 AssertJ:

  • 集合内容断言(断言 list 元素构成/顺序/提取字段)—— AssertJ 的 containsExactlyInAnyOrder / extracting(...)
  • 字段分组断言(同一逻辑组的多个字段作为一个整体校验,如坐标 x/y/z、时间窗 start/end)—— AssertJ 的 extracting(...).containsExactly(...)

其余场景(简单值、抛异常、各列语义独立的逐列断言如表格型 VO)一律 JUnit 原生,不切换。升级标准可机械执行:是否集合?是否同一逻辑组?两条都不是 → 留在原生逐列断言(失败定位准、加列只改一处)。

Installs
1
First Seen
14 days ago
java-unit-test from clawhub.ai