【JUnit实战3_21】第十二章:JUnit 5 与主流 IDE 的集成 + 第十三章:用 JUnit 5 做持续集成(上):在本地安装 Jenkins

《JUnit in Action》全新第3版封面截图
写在前面
可能是出于全面的考虑,第 12 章专门介绍了 JUnit 5 与三款主流 IDE 的集成情况并进行了横向对比,用到的案例和截图都是前面章节的,实在没多少干货。第 13 章虽然只介绍了 Jenkins 的基本用法和持续集成的最简化步骤,但真要实践的话,整个过程会有很多细节问题需要处理,篇幅又太长了。因此本篇只梳理到 Jenkins 在 Windows 本地的安装,下一篇详细介绍基于 JUnit 5 单元测试下的 Jenkins 持续集成实战。敬请关注。
第十二章:JUnit 5 与主流 IDE 的集成
本章概要
JUnit 5与IntelliJ IDEA的集成JUnit 5与Eclipse的集成JUnit 5与NetBeans的集成
本章按照 JUnit 5 团队与主流 IDE 集成的先后顺序,依次演示了同一套测试用例在 IntelliJ IDEA、Eclipse 以及 NetBeans 中的运行过程。
由于 IDEA 集成最早、最成熟,各项 JUnit 5 特性都实现得很好(强烈推荐)。
Eclipse 的集成稍晚,但由于不能手动强制执行添加了 @Disabled 注解的测试类,功能稍微偏弱。
NetBeans 的集成最晚,市场份额也最小,部分功能特性需要安装 JaCoCo 插件才能达到在 IDEA 中的效果,不太推荐。
三款 IDE 集成 JUnit 5 的横向对比情况如下:
| 特性 | IntelliJ IDEA | Eclipse | NetBeans |
|---|---|---|---|
强制运行 @Disabled 测试 | ✔️ | ❌ | ❌ |
@DisplayName 渲染良好 | ✔️ | ✔️ | ❌ |
基于 @TestFactory 的动态测试 | ✔️ | ✔️ | ❌ |
@Nested | ✔️ | ✔️ | 不执行嵌套测试 |
@ParameterizedTest | ✔️ | ✔️ | ❌ |
@RepeatedTest | ✔️ | ✔️ | ❌ |
| 带分类标记的测试 | ✔️ | ✔️ | 需要 Surefire 插件辅助 |
| 运行带测试覆盖率的测试 | ✔️ | ✔️ | 需要 JaCoCo 插件辅助 |
第十三章:用 JUnit 5 做持续集成
本章概要
Jenkins的配置与定制;- 简介开发团队常见的持续集成实践;
- 演示持续集成环境下的任务处理流程。
Life is a continuous exercise in creative problem solving.
人生就是个不断练习创造性解决问题的过程。—— Michael J. Gelb
13.1 持续集成的概念
持续集成(continuous integration,即 CI) 是一种软件开发实践,要求团队成员能够频繁集成各自的工作成果,通常每人每天至少集成一次,从而每天完成多次集成;每次集成均利用自动化构建(含测试)进行验证,以求尽快尽早发现集成本身存在的问题。
将 JUnit 测试集成到日常开发周期后,基本流程大致为:[code ➡️ run ➡️ test ➡️ code ]:
如果是 TDD 模式则略有不同,大致为:[test ➡️ code ➡️ run ➡️ test]:
除了定期集成外,还需要集成系统模块,以便尽快查看集成的结果。具体说来,用于持续集成的工具至少需要做到以下步骤:
- 从源码版本库签出(
check out)项目; - 构建每个模块并执行 所有的 单元测试,以验证每个模块均能独立、正常运行;
- 执行集成测试,验证各模块能否按预期实现既定交互;
- 发布上一步测试的执行结果。
使用工具集成和纯手动集成有何区别?答案是 没有本质上的区别,也不应该有本质区别。
持续集成的基本模式:

13.2 Jenkins 相关背景
Jenkins 的前身是一款准 CI 工具 Hudson。Hudson 最初是由 Sun 公司开发的一款免费软件,自从 2010 年 Oracle 甲骨文公司正式收购 Sun 公司后,Hudson 逐渐走上商业道路;2011 年初,开发者社区的绝大多数成员决定以 Jenkins 为名继续维护该开源项目。随后 Hudson 热度急剧下滑,并最终被 Jenkins 取代。2017 年 2 月,Hudson 停止维护。这是开源生态圈一次经典的 庶民的胜利,也给所有开源项目上了一课:社区的活力和项目的质量,远比一个名字来得重要。资本纵然可以买下源代码,但却买不下整个开源社区。
Jenkins 崛起于 DevOps 文化和技术实践蓬勃发展的关键时期,并凭借其无与伦比的灵活性和可扩展性,成为 DevOps 早期的探路者们实践 CI/CD 的 事实上的标准工具。可以说,Jenkins 奠定了现代 DevOps 运动的基石,为后来的云原生和 GitOps 等更先进理念的生根发芽创造了条件。
13.3 Jenkins 的安装
我本地实测前的相关准备工作:
java -version:java version "21.0.6" 2025-01-21 LTSgit --version:git version 2.45.1.windows.1mvn -v:Apache Maven 3.9.11
到 官网 下载 Jenkins 的最新稳定版 Windows 安装包 jenkins.msi(https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/):

之后就是傻瓜式操作(这里我只改了安装路径,改到 D:\ProgramFiles\Jenkins\),最后来到安装目录下,找到启动 Jenkins 需要的 war 文件:

其实完全按 msi 包的安装流程走,Windows 会自动创建一个 Jenkins 服务,最后直接在浏览器访问 http://localhost:8080/、新建管理员帐号、重置登录密码、完成初始化插件安装后,Jenkins 就能像书中那样正常使用了:

但是,如果要进一步实测 CI 持续集成的工作流程,在这样的 Jenkins 平台模拟几次手动构建,就会遇到很多新问题(稍后详细复盘)。该问题暂时只能通过从命令行启动 Jenkins 来解决(已位于 Jenkins 安装目录下):
java -jar ./Jenkins.war
