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

news/2025/11/28 21:42:09/文章来源:https://www.cnblogs.com/gccbuaa/p/19284227

JUnit in Action, Third Edition

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

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

第十二章: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 做持续集成

本章概要

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 的安装

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

到 官网 下载 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.mzph.cn/news/980115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录Day24_回溯_复原IP.md

代码随想录Day24_回溯_复原IP.md复原IP地址 题目理解 1.给出的是字符串,IP地址在【0,255】之间,字符串转数字; 2.0可以单独出现,但是不能跟数字出现; 3.字符串中要插入.; 4.字符串的大小范围在4~12之间; 5.不能…

何以为生

何以为生何以为生人造的东西 价值不贵。 天然的才是资源。不能打断别人说话, 不急不躁。很想买入一支股票。。。

GraphRAG进阶:基于Neo4j与LlamaIndex的DRIFT搜索实现详解

微软的GraphRAG算得上是最早一批成熟的GraphRAG系统,它把索引阶段(抽取实体、关系、构建层级社区并生成摘要)和查询阶段的高级能力整合到了一起。这套方案的优势在于,可以借助预先计算好的实体、关系、社区摘要来回…

Gemini3疯了!0.09接入Nano Banana Pro 4k画质API(附实战教程)

2025年11月20日谷歌正式推出Nano Banana Pro(官方名称Gemini 3 Pro Image)时,Ai图像生成最强模型。这款基于Gemini 3 Pro foundation打造的新一代图像生成与编辑模型,不仅在图像质量上达到了全新高度,更在4K高清分…

11/28

今天没课,嘿嘿

noip板子

倍增法lca const int N = 500010; int n, m, s; vector<int> g[N]; void addeg(int u, int v) {g[u].push_back(v);g[v].push_back(u); }int d[N], anc[N][25]; void dfs(int u, int fa) {d[u] = d[fa] + 1;for …

东方博宜OJ 1119:求各位数字之和 ← 循环结构

​【题目来源】https://oj.czos.cn/p/1119【题目描述】输入一个正整数 N(0≤N≤2147483647),求它的各位数字之和。【输入格式】一行,一个正整数 N。【输出格式】一行,一个整数。【输入样例】189【输出样例】18【数…

2025.11.28

起床,吃饭,躺着,上网课,洗澡,买酸奶,吃饭,睡觉

10个免费查重降重工具分享,降AIGC率工具

在当前的学术环境中,确保论文的原创性和降低AI生成内容(AIGC)的检测率变得尤为重要。以下是一些能够有效降低论文AIGC率的工具,包括它们的功能、使用方法、效果以及用户评价。 SpeedAI 功能:SpeedAI专注于去除文档…

Linux_Socket_浅谈UDP - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Jetlinks 物联网平台 开源版学习源码分析

2022-06-25 Jetlinks Jetlinks 是一个非常优秀物联网基础平台, 还支持开源二次开发, 且他们的开发团队还非常友好的, 即使你使用的是开源的版本还挺愿意帮你解决问题 (当然我司也购买了企业版, 但不能分享学习笔记) 文…

多项式次数选择完整演示

多项式次数选择完整演示(Python) 本文将通过 人工生成数据→数据划分→多次数模型训练→验证集筛选最优次数→测试集评估 的全流程,演示多项式回归中如何通过验证集选择最优次数,所有代码逐行解释,兼顾理论与实践…

Java 线程池深度解析:原理、策略与生产环境调优指南

在现代 Java 应用中,线程池已成为并发处理的核心基础设施。无论是 Web 服务、定时任务、RPC 框架还是大数据处理,线程池都扮演着至关重要的角色。正确理解线程池的工作机制与调优方法,将直接影响系统的吞吐、延迟与…

Tita CRM一体化平台:破解销售管理五大痛点,实现业绩可持续增长

在数字化转型浪潮中,销售管理正成为企业高质量发展的关键瓶颈。目标执行不到位、客户资源流失、团队协同低效、项目交付延期、绩效考核失真——这些痛点的背后,是企业销售管理体系的系统性缺失。Tita CRM以”销售+交…

NOIP 算法合集

Ⅰ​.数据结构 1.树状数组 时间复杂度:\(O(n\log n)\) 优点:常数小 缺点:可以维护的内容不如线段树 应用:小常数维护前缀和或单点值 int tr[200005]; void add(int x,int y){while(x<=n)tr[x]+=y,x+=(-x)&x…

会赢吗

会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢…

直接通过electron创建项目

直接通过electron创建项目一、创建原始electron实例demo1 1、创建项目目录demo1 2、通过命令初始化项目配置文件package.json 命令:npm init -y 项目目录下生成packabe.json文件 {"name": "demo1"…

东方博宜OJ 1246:请输出n行的9*9乘法表 ← 嵌套循环

​【题目来源】https://oj.czos.cn/p/1246【题目描述】请从键盘读入一个整数 n,代表有 n 行,输出 n 行的 9*9 乘法表。比如,假设 n=5,则输出如下: 1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*…

使用cnpm(中国镜像源的npm客户端)来安装electron

使用cnpm(中国镜像源的npm客户端)来安装electron要使用cnpm(中国镜像源的npm客户端)来安装electron,你需要先确保已经安装了cnpm。如果你还没有安装cnpm,你可以通过npm来安装它。以下是具体步骤:1. 安装 cnpm 首…