Java 单元测试(二):JUnit 5 实战上手
学完概念该动手了。JUnit 5 从 2017 年发布至今,已经成为 Java 测试的事实标准。这可能是你第一次见到一套“官方重写、彻底改造”的测试框架——从架构到 API,都是全新的。这篇文章带你从零开始,把 JUnit 5 用起来。
一个开发出身的DevOps工程师 · 代码有理性,文章有温度
学完概念该动手了。JUnit 5 从 2017 年发布至今,已经成为 Java 测试的事实标准。这可能是你第一次见到一套“官方重写、彻底改造”的测试框架——从架构到 API,都是全新的。这篇文章带你从零开始,把 JUnit 5 用起来。
“这段代码我测过了,能跑。”——能跑不等于正确,手动测试不等于测试覆盖。你改了一行代码,怎么确保没弄坏别的地方?删掉了一个字段,所有引用的地方都更新了吗?单元测试的存在,就是为了回答这些“万一”。
前面介绍了 Checkstyle、PMD、FindBugs、SpotBugs 四款工具,它们各有侧重,但有一个共同的局限:只适合“一个人看”。在团队协作中,你需要一个能看到代码质量趋势、对比历史数据、设置质量门禁的平台——这就是 SonarQube 的舞台。它不仅整合了所有这些工具的检查能力,还提供了一个直观的 Web 界面来管理和追踪代码质量。
上一篇文章介绍了 FindBugs——一款传奇的字节码级 Bug 检查工具,但它已在 2016 年停止维护。好在社区没有让它沉寂:SpotBugs 作为 FindBugs 的正式继任者,继承了其全部 Bug 模式和分析引擎,并持续增加新特性和对新版本 Java 的支持。如果你正在寻找一款“活着的”字节码级静态检查工具,SpotBugs 就是答案。
Checkstyle 管格式,PMD 管写法,但有些 Bug 藏得更深——比如空指针解引用、资源未关闭、无限递归——这些在源码层面上看起来一切正常,只有分析字节码才能发现。FindBugs 就是干了这件事:它不读源码,直接分析 .class 文件,从字节码中嗅探 Bug 模式。它是一个传奇工具,尽管已经停止维护,但它留下的遗产——SpotBugs——仍...
上一篇文章介绍了 Checkstyle,它负责“代码看起来规不规范”。但代码格式正确了,就真的是好代码吗?空的 catch 块、用 == 比较字符串、在循环里拼接字符串——这些写法格式上挑不出毛病,但实践中迟早会出问题。PMD 就是为发现这些“不良实践”而设计的。
代码风格问题看似琐碎——大括号换不换行、变量怎么命名、import 要不要用通配符——但当团队里每个人都有自己的“偏好”时,项目代码很快就会变成一个风格大杂烩。Checkstyle 就是为解决这个问题而生的:把代码风格写进配置,用工具自动检查,谁也别争。
代码写完了,能跑起来,功能也对——但这样就够了吗?代码里可能藏着潜在的空指针、资源未关闭、不规范的命名、多余的导入……这些问题在测试阶段不一定暴露,但迟早会在生产环境给你“惊喜”。静态代码检查,就是在不运行代码的前提下,自动发现这些问题。
天降大任于斯人,必先不从其所愿,以使其知世事之曲折不易、之不由心; 必难之,以使其知天之不可依、地之不可靠、人之不可尽信; 必穷尽之、富贵之,而后观其不失其志,以考其心,验其性。
心一,信,喜乐; 物别,疑,悲苦。 人心喜静,复归;