当前位置: 首页 > news >正文

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

JUnit in Action, Third Edition

《JUnit in Action》全新第3版封面截图

写在前面
可能是出于全面的考虑,第 12 章专门介绍了 JUnit 5 与三款主流 IDE 的集成情况并进行了横向对比,用到的案例和截图都是前面章节的,实在没多少干货。第 13 章虽然只介绍了 Jenkins 的基本用法和持续集成的最简化步骤,但真要实践的话,整个过程会有很多细节问题需要处理,篇幅又太长了。因此本篇只梳理到 Jenkins 在 Windows 本地的安装,下一篇详细介绍基于 JUnit 5 单元测试下的 Jenkins 持续集成实战。敬请关注。

第十二章:JUnit 5 与主流 IDE 的集成

本章概要

  • JUnit 5IntelliJ IDEA 的集成
  • JUnit 5Eclipse 的集成
  • JUnit 5NetBeans 的集成

本章按照 JUnit 5 团队与主流 IDE 集成的先后顺序,依次演示了同一套测试用例在 IntelliJ IDEAEclipse 以及 NetBeans 中的运行过程。

由于 IDEA 集成最早、最成熟,各项 JUnit 5 特性都实现得很好(强烈推荐)。

Eclipse 的集成稍晚,但由于不能手动强制执行添加了 @Disabled 注解的测试类,功能稍微偏弱。

NetBeans 的集成最晚,市场份额也最小,部分功能特性需要安装 JaCoCo 插件才能达到在 IDEA 中的效果,不太推荐。

三款 IDE 集成 JUnit 5 的横向对比情况如下:

特性IntelliJ IDEAEclipseNetBeans
强制运行 @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 ]:

code
run
test
code

如果是 TDD 模式则略有不同,大致为:[test ➡️ code ➡️ run ➡️ test]:

test
code
run
test

除了定期集成外,还需要集成系统模块,以便尽快查看集成的结果。具体说来,用于持续集成的工具至少需要做到以下步骤:

  1. 从源码版本库签出(check out)项目;
  2. 构建每个模块并执行 所有的 单元测试,以验证每个模块均能独立、正常运行;
  3. 执行集成测试,验证各模块能否按预期实现既定交互;
  4. 发布上一步测试的执行结果。

使用工具集成和纯手动集成有何区别?答案是 没有本质上的区别,也不应该有本质区别。

持续集成的基本模式:

Fig13.2

13.2 Jenkins 相关背景

Jenkins 的前身是一款准 CI 工具 HudsonHudson 最初是由 Sun 公司开发的一款免费软件,自从 2010 年 Oracle 甲骨文公司正式收购 Sun 公司后,Hudson 逐渐走上商业道路;2011 年初,开发者社区的绝大多数成员决定以 Jenkins 为名继续维护该开源项目。随后 Hudson 热度急剧下滑,并最终被 Jenkins 取代。2017 年 2 月,Hudson 停止维护。这是开源生态圈一次经典的 庶民的胜利,也给所有开源项目上了一课:社区的活力和项目的质量,远比一个名字来得重要。资本纵然可以买下源代码,但却买不下整个开源社区。

Jenkins 崛起于 DevOps 文化和技术实践蓬勃发展的关键时期,并凭借其无与伦比的灵活性和可扩展性,成为 DevOps 早期的探路者们实践 CI/CD事实上的标准工具。可以说,Jenkins 奠定了现代 DevOps 运动的基石,为后来的云原生和 GitOps 等更先进理念的生根发芽创造了条件。

13.3 Jenkins 的安装

我本地实测前的相关准备工作:

  • java -versionjava version "21.0.6" 2025-01-21 LTS
  • git --versiongit version 2.45.1.windows.1
  • mvn -vApache Maven 3.9.11

到 官网 下载 Jenkins 的最新稳定版 Windows 安装包 jenkins.msi(https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/):

Fig13.3

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

Fig13.4

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

Fig13.5

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

java -jar ./Jenkins.war
http://www.dtcms.com/a/556720.html

相关文章:

  • Java算法题分享(一)
  • 简单、高效且低成本的预训练、微调与服务,惠及大众基于 Ray 架构设计的覆盖大语言模型(LLM)完整生命周期的解决方案byzer-llm
  • 软件测试-BUG篇
  • 写入瓶颈到削峰填谷:基于 Redis 与 MySQL 的高并发写入工程化方案
  • 一些常见的编程软件
  • Nginx Stream模块开发:TCP/UDP代理扩展
  • 开网站做外贸中国做网站正邦
  • K8s Dashboard运维技巧全面经验总结
  • 合肥创业网从百万到千万 网站怎么优化
  • Flutter boost权威指南
  • 人工智能、机器学习与神经网络:解锁智能时代的核心密码
  • Kubernetes 上的 GitLab + ArgoCD 实践(三):使用 ArgoCD 打通 CD 流程
  • spark-SQL学习
  • SSM基于网络安全维护的机房设备管理19rya(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • ProcessLifecycleOwner 完全指南:优雅监听应用前后台状态
  • html css js网页制作成品——珠帘玉幕HTML+CSS网页设计(4页)附源码
  • 开启RN之旅——小试牛刀
  • Unity使用PP-MattingV2实现人像分割
  • 智能模型对齐(一致性)alignment
  • VSCode SSH远程连接失败 最速解决方案
  • 网站开发旅游前台模板临海建设规划局网站
  • 加载YOLO模型,处理mp4视频
  • 基于 GEE 利用 GHSL(100m)数据的区域建成区时空变化量化分析
  • day22_用户授权 头像上传
  • 网站识别爬虫(包括以浏览器插件形式运行的爬虫)主要通过分析请求特征、行为模式等差异来区分人类用户和自动化程序
  • 网站建设费用IPseo官网优化详细方法
  • 汽车OTA CDN HTTPS MQTT OCSP
  • python异步编程 -- 深入理解事件循环event-loop
  • 京津冀工业智能体赋能:重构产业链升级新篇章
  • AIGEO系统到底是什么?