Maven Surefire Plugin
Maven Surefire Plugin 最新版本新特性详解
Maven Surefire Plugin 是用于运行单元测试和集成测试的重要工具,支持 JUnit、TestNG 等测试框架。插件的新版本引入了许多新特性和配置选项,这些功能提升了测试执行的性能、灵活性和并发能力。在本节中,我们将详细介绍 Surefire Plugin 的各个配置选项及其用途,并结合实际使用场景和示例进行讲解。
1. forkCount
作用:
forkCount 选项指定在测试过程中 JVM fork 的数量。多 JVM 并行可以提升测试执行的性能,特别适合在多核机器上运行测试。
- 默认值:
1 - 配置值: 具体数值,或者用
C后缀表示 CPU 核心数的占比(如1C,2C)。1C: 表示使用一个 CPU 核心。2C: 表示使用两个 CPU 核心。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version> <!-- 最新版本 --><configuration><forkCount>2C</forkCount> <!-- 使用两个 CPU 核心并行执行测试 --></configuration></plugin></plugins>
</build>
配置解释:
forkCount=2C表示会根据机器的 CPU 核心数启动 2 个 JVM 实例,来并行执行测试,提升测试速度。
2. reuseForks
作用:
reuseForks 控制测试过程中是否重用已经 fork 出来的 JVM 实例。该配置可以避免每次测试都启动新的 JVM,从而减少开销。
- 默认值:
true - 配置选项:
true: JVM 会被重用,适合大部分场景。false: 每次测试都会启动新的 JVM,这可以确保每个测试类有一个全新的 JVM 环境。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><forkCount>2</forkCount><reuseForks>true</reuseForks> <!-- 启用 JVM 重用 --></configuration></plugin></plugins>
</build>
配置解释:
reuseForks=true会复用 JVM 实例,避免频繁启动 JVM,显著提升测试性能。
3. forkMode(已弃用)
作用:
forkMode 曾用于控制 JVM fork 的模式,现在已被 forkCount 和 reuseForks 取代。主要的模式有:
once: 仅创建一个 JVM 进程,所有测试在同一个进程中执行。always: 每个测试类启动一个新的 JVM。
示例配置(历史配置):
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.12</version><configuration><forkMode>once</forkMode> <!-- 旧版本配置,已被弃用 --></configuration></plugin></plugins>
</build>
4. argLine
作用:
argLine 用于向 fork 出来的 JVM 添加命令行参数,可以指定 JVM 参数、系统属性、内存限制等。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><argLine>-Xmx1024m -Duser.timezone=UTC</argLine> <!-- 设置 JVM 参数和系统属性 --></configuration></plugin></plugins>
</build>
配置解释:
argLine=-Xmx1024m表示设置 JVM 堆内存最大为 1024MB。-Duser.timezone=UTC设置 JVM 的时区为 UTC。
5. parallel
作用:
parallel 选项允许并行执行测试类或测试方法,提高测试执行速度。可以根据类或方法并行,也可以两者都并行。
- 配置选项:
methods: 并行执行同一个测试类中的不同测试方法。classes: 并行执行不同的测试类。both: 类和方法都并行执行。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><parallel>both</parallel> <!-- 同时并行执行类和方法 --><threadCount>4</threadCount> <!-- 并行线程数为4 --></configuration></plugin></plugins>
</build>
配置解释:
parallel=both表示测试类和测试方法会同时并行执行。threadCount=4配置了 4 个并行线程来处理测试任务。
6. includes 和 excludes
作用:
includes 和 excludes 用于指定哪些测试类应该包含在测试执行中,哪些类应该排除。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><includes><include>**/*Test.java</include> <!-- 包含所有 Test 结尾的测试类 --></includes><excludes><exclude>**/Legacy*.java</exclude> <!-- 排除所有以 Legacy 开头的类 --></excludes></configuration></plugin></plugins>
</build>
配置解释:
includes:包含所有以Test结尾的测试类。excludes:排除所有以Legacy开头的类。
7. runOrder
作用:
runOrder 用于指定测试类或测试方法的执行顺序。
- 配置选项:
alphabetical: 按字母顺序执行。reversealphabetical: 按字母倒序执行。random: 随机顺序执行。filesystem: 根据文件系统中的顺序执行。hourly: 每小时随机顺序发生变化。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><runOrder>random</runOrder> <!-- 随机顺序执行测试 --></configuration></plugin></plugins>
</build>
配置解释:
runOrder=random:测试类和方法将按照随机顺序执行,有助于确保测试的独立性。
8. skipTests 与 skipITs
skipTests:跳过所有单元测试。skipITs:跳过集成测试。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><skipTests>true</skipTests> <!-- 跳过单元测试 --><skipITs>false</skipITs> <!-- 执行集成测试 --></configuration></plugin></plugins>
</build>
配置解释:
skipTests=true:跳过所有的单元测试,适合快速构建项目时使用。skipITs=false:确保集成测试不会被跳过。
9. reportFormat
作用:
reportFormat 用于指定测试报告的格式,通常为 brief 或 plain。
示例配置:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M9</version><configuration><reportFormat>brief</reportFormat> <!-- 使用简洁格式生成报告 --></configuration></plugin></plugins>
</build>
通过以上配置选项的详细讲解,Maven Surefire Plugin 的最新功能可以灵活地支持不同规模和复杂度的项目测试需求。
相关文章:
Maven Surefire Plugin
Maven Surefire Plugin 最新版本新特性详解 Maven Surefire Plugin 是用于运行单元测试和集成测试的重要工具,支持 JUnit、TestNG 等测试框架。插件的新版本引入了许多新特性和配置选项,这些功能提升了测试执行的性能、灵活性和并发能力。在本节中&…...
八、跳跃、闪避
一、人物跳跃功能 1、动画 设置一个bool值 条件设置为true 2、逻辑 实现跳跃,一定有IsGround;判断是否为地面,进行跳跃功能 写一个跳跃和一个条约结束方法 跳跃设置为false,结束设置为true 3、代码 public void Jump() {if…...
使用辅助分类器 GAN 进行条件图像合成
Conditional Image Synthesis with Auxiliary Classifier GANs Conditional Image Synthesis with Auxiliary Classifier GANs(简称AC-GANs)是一种用于改善生成对抗网络(GANs)进行图像合成的方法。在AC-GANs中,判别器…...
C#中的static关键字:静态成员与单例模式的实现
在C#中,static 关键字是一个非常重要的概念,它用于声明静态成员,这些成员属于类本身,而不是类的任何特定实例。使用 static 关键字可以定义静态类、静态字段、静态属性、静态方法等。此外,理解静态成员也对于实现如单例…...
【优选算法】(第八篇)
目录 串联所有单词的⼦串(hard) 题目解析 讲解算法原理 编写代码 最⼩覆盖⼦串(hard) 题目解析 讲解算法原理 编写代码 串联所有单词的⼦串(hard) 题目解析 1.题目链接:. - 力扣&#…...
告别PPT熬夜!Kimi+AIPPT一键生成PPT,效率upup!
Kimi AiPPT 一键生成PPT 还在为做PPT熬夜加班吗?还在为PPT排版抓狂吗?现在,有一个好消息要告诉所有“打工人”!Kimi和AIPPT强强联手,推出了一键生成PPT功能,让你告别PPT制作的痛苦! 以前做…...
大语言模型在构建UNSPSC 分类数据中的应用
UNSPSC 是联合国标准产品和服务代码。UNSPSC由联合国开发计划署(UNDP)和Dun & Bradstreet公司(D & B)于1998年联合制定,自2003年以来一直由GS1 US管理。GS1 US 将在 2024 年底前将 UNSPSC 的管理权移交给 UNDP…...
C++初阶:STL详解(十)——priority_queue的介绍,使用以及模拟实现
✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 一.priority_queue的介绍 优先级队列被实现…...
Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)
点击上方"蓝字"关注我们 01、QFileSystemWatcher >>> QFileSystemWatcher 是 Qt 提供的一个类,用于监视文件和目录的变化。它允许应用程序监控一个或多个文件和目录,并在这些文件或目录内容发生变化时收到通知。这使得 Qt 应用程序能够动态响应文件系统的…...
【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 ❀Linux进程间通信 📒1. 进程间通信介绍📚2. 什么是管道📜3…...
【力扣 | SQL题 | 每日三题】力扣1148, 1327, 1211, 1174
1. 力扣1148:文章浏览1 1.1 题目: Views 表: ------------------------ | Column Name | Type | ------------------------ | article_id | int | | author_id | int | | viewer_id | int | | view_date …...
【鸿蒙开发】详解GridRowSizeOption的尺寸属性
文章目录 1. 尺寸属性的含义2. 为什么要有这几个属性3. 具体作用4. 如何使用总结 在鸿蒙(HarmonyOS)开发中,布局的灵活性和适应性对于构建高质量的应用至关重要。 GridRowSizeOption是鸿蒙开发框架提供的一个布局属性,用于定义网…...
Sping源码:三级缓存
目录 一、概念1、三级缓存的作用2、循环依赖的含义 二、代码1、代码下载2、文件功能介绍3、源码分析3.1、找到获取A对象的位置,打断点进行debug操作3.2、一步步找到在A对象中注入B对象的位置3.3、一步步找到B对象注入A对象的位置3.4、往下找到通过三级缓存解决循环依…...
latex有哪些颜色中文叫什么,Python绘制出来
latex有哪些颜色中文叫什么,Python绘制出来 为了展示xcolor包预定义的颜色及其对应的中文名称,并使用Python打印出来,我们可以先列出常见的预定义颜色名称,然后将它们翻译成中文,并最后用Python打印出来。 步骤 列出…...
C语言进程
什么是进程 什么是程序 一组可以被计算机直接识别的 有序 指令 的集合。 通俗讲:C语言编译后生成的可执行文件就是一个程序。 那么程序是静态还是动态的? 程序是可以被存储在磁盘上的,所以程序是静态的。 那什么是进程 进程是程序的执行过…...
C#基础(4)封装——成员方法
前言 我们在上一节学习了关于类的成员变量的使用,甚至也看到了相应的成员方法,我们可以将二者理解为类里面的变量和函数。 如果我这样说你肯定就能很快理解成员方法是什么作用了。 C#中设计成员方法的目的是为了将相关的功能代码组织在一起࿰…...
springbot,JWT令牌的使用。实现http请求拦截校验。
JWT 由三部分组成,用点(.)分隔 Header(头部) Payload(负载)Signature(签名) 一、原理 Jwt原理其实很简单,在后端首先要有个拦截器,他会拦截所有http请求&…...
【SQL】DDL语句
文章目录 1.SQL通用语法2.SQL的分类3.DDL3.1数据库操作3.2 表操作3.2.1 表操作--数据类型3.2.2 表操作--修改3.2.3 表操作--删除 SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。…...
【分页】Spring Boot 列表分页 + javaScript前台展示
后端: 准备好查询实体与分页实体 1、分页工具实体 package com.ruoyi.dms.config;import com.alibaba.nacos.api.model.v2.Result; import lombok.Data;import java.io.Serializable; import java.util.List;/*** author 宁兴星* description: 列表返回结果集*/ …...
「安装」 Windows下安装CUDA和Pytorch
「安装」 Windows下安装CUDA和Pytorch 文章目录 「安装」 Windows下安装CUDA和PytorchMac、Linux、云端Windows安装CUDA安装miniconda安装PyTorch测试总结 其他 Mac、Linux、云端 Mac、Linux、云端安装Miniconda和Pytorch的方法参考其他资料。 Windows 下面进行Windows下安装…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
