Agent Skills
返回列表
💻

Java 单元测试

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_a36dc51e/java-unit-test。

技能介绍

要解决什么问题

很多团队的 Java 单测看起来「有覆盖率」,实则只测 happy path:无效输入、边界 off-by-one、异常分支没人设计,Mock 还把被测类内部 new 出来的协作对象一并 mock 掉,bug 仍在生产里复现。更常见的是「想到哪写到哪」——没有等价类、决策表或状态迁移,用例数量与分支盲区都对不上。

本技能把测什么、测多少、怎么设计、工程默认收成一套可执行的规范:设计层用四维度(正向 / 反向 / 边界 / 异常)做必检清单;方法层按被测对象路由到等价类+边界值、决策表或状态迁移,目标是最小充分集(常见 3~8 个用例),而不是堆覆盖率。

技能如何工作

激活后先做第 0 步探测:从 pom.xml 判断 Spring Boot、JUnit 4/5、Mockito 基线,并归类被测对象是纯计算、多条件组合、状态机还是带外部依赖。再按路由表读对应 reference,在四维度齐全的前提下落 @Test / @ParameterizedTest / assertThrows。

工程侧有明确默认:断言默认 JUnit 原生 Assertions,仅在集合内容断言或同一逻辑组多字段校验时升级到 AssertJ;Mock只 mock DB/RPC/时间等外部依赖,纯单测优先 @Mock + 注入模式(跟随项目既有装配),mockStatic 必须 try-with-resources。每条重要约定都带「✗ 错误设计 → ✓ 正确设计」,并区分 S 级(测不出 bug 的设计缺陷)与 A 级(命名、参数化、禁止反射测私有方法等纪律)。

收尾用 DoD 锚点自检:四维度各至少一例、分支盲区清零(有 JaCoCo 看 Branch Missed,无则人工列分支)、等价类清单显式勾完——而不是把「覆盖率 ≥ 80%」当完成标准。

适用边界

技能栈中立:跟随项目现有 JUnit 与 Spring 配置,不主动迁移框架。JUnit 5 为主叙述,JUnit 4 差异在工具 reference 里对照。架构守护(ArchUnit)仅在分层包且单测会触达跨层依赖、且项目尚未引入 ArchUnit 时询问一次,纯计算方法不强行推销。测试设计追求可代表的最小集,不承诺穷尽所有输入组合。

使用场景

  • 为运费、折扣校验等输入→输出的纯方法写单测,先列有效/无效等价类与边界值,再映射为 @Test 与 assertThrows
  • 促销规则、费率档位或权限组合等多分支逻辑,画决策表使每一列对应一条用例,避免只测一两种组合
  • 订单、审批或支付等有状态对象,为每条合法状态迁移与非法转移各设计用例,验证拒绝路径与业务异常类型
  • 合并前自查或 Review 他人测试:对照 S 级规则查四维度是否齐全、是否误 mock 被测类内部 new 的依赖

适合人员

  • 负责 Spring Boot 业务 Service/领域方法、希望在 PR 前用四维度与最小充分集(约 3~8 例)交差的后端工程师
  • 做 Code Review 要把「分支盲区清零」和 Mock 只挡外部依赖写进团队 DoD 的技术负责人或质量守门人
  • 接手遗留 Java 模块、项目仍是 JUnit 4 或混合断言风格,需要栈中立落地 Mockito 而非强行迁移的维护者
  • 使用 AI 生成单测后需人工核对等价类代表性、异常断言是否落到具体业务异常类而非 Exception 的提交者