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

Maven Surefire Plugin

Maven Surefire Plugin 最新版本新特性详解

Maven Surefire Plugin 是用于运行单元测试和集成测试的重要工具,支持 JUnit、TestNG 等测试框架。插件的新版本引入了许多新特性和配置选项,这些功能提升了测试执行的性能、灵活性和并发能力。在本节中,我们将详细介绍 Surefire Plugin 的各个配置选项及其用途,并结合实际使用场景和示例进行讲解。


1. forkCount

作用:

forkCount 选项指定在测试过程中 JVM fork 的数量。多 JVM 并行可以提升测试执行的性能,特别适合在多核机器上运行测试。

  • 默认值: 1
  • 配置值: 具体数值,或者用 C 后缀表示 CPU 核心数的占比(如 1C2C)。
    • 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 的模式,现在已被 forkCountreuseForks 取代。主要的模式有:

  • 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

作用:

includesexcludes 用于指定哪些测试类应该包含在测试执行中,哪些类应该排除。

示例配置:
<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 用于指定测试报告的格式,通常为 briefplain

示例配置:
<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 是用于运行单元测试和集成测试的重要工具&#xff0c;支持 JUnit、TestNG 等测试框架。插件的新版本引入了许多新特性和配置选项&#xff0c;这些功能提升了测试执行的性能、灵活性和并发能力。在本节中&…...

八、跳跃、闪避

一、人物跳跃功能 1、动画 设置一个bool值 条件设置为true 2、逻辑 实现跳跃&#xff0c;一定有IsGround&#xff1b;判断是否为地面&#xff0c;进行跳跃功能 写一个跳跃和一个条约结束方法 跳跃设置为false&#xff0c;结束设置为true 3、代码 public void Jump() {if…...

使用辅助分类器 GAN 进行条件图像合成

Conditional Image Synthesis with Auxiliary Classifier GANs Conditional Image Synthesis with Auxiliary Classifier GANs&#xff08;简称AC-GANs&#xff09;是一种用于改善生成对抗网络&#xff08;GANs&#xff09;进行图像合成的方法。在AC-GANs中&#xff0c;判别器…...

C#中的static关键字:静态成员与单例模式的实现

在C#中&#xff0c;static 关键字是一个非常重要的概念&#xff0c;它用于声明静态成员&#xff0c;这些成员属于类本身&#xff0c;而不是类的任何特定实例。使用 static 关键字可以定义静态类、静态字段、静态属性、静态方法等。此外&#xff0c;理解静态成员也对于实现如单例…...

【优选算法】(第八篇)

目录 串联所有单词的⼦串&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 最⼩覆盖⼦串&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 串联所有单词的⼦串&#xff08;hard&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#…...

告别PPT熬夜!Kimi+AIPPT一键生成PPT,效率upup!

Kimi AiPPT 一键生成PPT 还在为做PPT熬夜加班吗&#xff1f;还在为PPT排版抓狂吗&#xff1f;现在&#xff0c;有一个好消息要告诉所有“打工人”&#xff01;Kimi和AIPPT强强联手&#xff0c;推出了一键生成PPT功能&#xff0c;让你告别PPT制作的痛苦&#xff01; 以前做…...

大语言模型在构建UNSPSC 分类数据中的应用

UNSPSC 是联合国标准产品和服务代码。UNSPSC由联合国开发计划署&#xff08;UNDP&#xff09;和Dun & Bradstreet公司&#xff08;D & B&#xff09;于1998年联合制定&#xff0c;自2003年以来一直由GS1 US管理。GS1 US 将在 2024 年底前将 UNSPSC 的管理权移交给 UNDP…...

C++初阶:STL详解(十)——priority_queue的介绍,使用以及模拟实现

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 一.priority_queue的介绍 优先级队列被实现…...

Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)

点击上方"蓝字"关注我们 01、QFileSystemWatcher >>> QFileSystemWatcher 是 Qt 提供的一个类,用于监视文件和目录的变化。它允许应用程序监控一个或多个文件和目录,并在这些文件或目录内容发生变化时收到通知。这使得 Qt 应用程序能够动态响应文件系统的…...

【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux进程间通信 &#x1f4d2;1. 进程间通信介绍&#x1f4da;2. 什么是管道&#x1f4dc;3…...

【力扣 | SQL题 | 每日三题】力扣1148, 1327, 1211, 1174

1. 力扣1148&#xff1a;文章浏览1 1.1 题目&#xff1a; Views 表&#xff1a; ------------------------ | Column Name | Type | ------------------------ | article_id | int | | author_id | int | | viewer_id | int | | view_date …...

【鸿蒙开发】详解GridRowSizeOption的尺寸属性

文章目录 1. 尺寸属性的含义2. 为什么要有这几个属性3. 具体作用4. 如何使用总结 在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;布局的灵活性和适应性对于构建高质量的应用至关重要。 GridRowSizeOption是鸿蒙开发框架提供的一个布局属性&#xff0c;用于定义网…...

Sping源码:三级缓存

目录 一、概念1、三级缓存的作用2、循环依赖的含义 二、代码1、代码下载2、文件功能介绍3、源码分析3.1、找到获取A对象的位置&#xff0c;打断点进行debug操作3.2、一步步找到在A对象中注入B对象的位置3.3、一步步找到B对象注入A对象的位置3.4、往下找到通过三级缓存解决循环依…...

latex有哪些颜色中文叫什么,Python绘制出来

latex有哪些颜色中文叫什么&#xff0c;Python绘制出来 为了展示xcolor包预定义的颜色及其对应的中文名称&#xff0c;并使用Python打印出来&#xff0c;我们可以先列出常见的预定义颜色名称&#xff0c;然后将它们翻译成中文&#xff0c;并最后用Python打印出来。 步骤 列出…...

C语言进程

什么是进程 什么是程序 一组可以被计算机直接识别的 有序 指令 的集合。 通俗讲&#xff1a;C语言编译后生成的可执行文件就是一个程序。 那么程序是静态还是动态的&#xff1f; 程序是可以被存储在磁盘上的&#xff0c;所以程序是静态的。 那什么是进程 进程是程序的执行过…...

C#基础(4)封装——成员方法

前言 我们在上一节学习了关于类的成员变量的使用&#xff0c;甚至也看到了相应的成员方法&#xff0c;我们可以将二者理解为类里面的变量和函数。 如果我这样说你肯定就能很快理解成员方法是什么作用了。 C#中设计成员方法的目的是为了将相关的功能代码组织在一起&#xff0…...

springbot,JWT令牌的使用。实现http请求拦截校验。

JWT 由三部分组成&#xff0c;用点&#xff08;.&#xff09;分隔 Header&#xff08;头部&#xff09; Payload&#xff08;负载&#xff09;Signature&#xff08;签名) 一、原理 Jwt原理其实很简单&#xff0c;在后端首先要有个拦截器&#xff0c;他会拦截所有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&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。…...

【分页】Spring Boot 列表分页 + javaScript前台展示

后端&#xff1a; 准备好查询实体与分页实体 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下安装…...

106. 如何禁用牧场主日志的注释收集

Environment 环境 SUSE Rancher Prime - All versions SUSE Rancher Prime - 所有版本 Rancher-logging-105.3.x Procedure 程序 There could be situations where users might want to disable annotation collection with rancher-logging in order to reduce the amount o…...

数据库存储有什么作用

数据库存储就是把数据安全、规范、高效地存起来&#xff0c;方便以后用&#xff0c;核心作用可以分成这几块&#xff1a;1. 持久化保存程序关掉、电脑重启&#xff0c;数据不会丢失不像内存一断电就清空&#xff0c;数据库存在硬盘里长期保存2. 统一管理数据把零散的文件、记录…...

Livox Mid360激光雷达动态避障实战:DWA算法在移动机器人中的应用

1. Livox Mid360激光雷达与DWA算法初探 第一次接触Livox Mid360这款固态激光雷达时&#xff0c;我就被它的性能惊艳到了。相比传统机械式雷达&#xff0c;Mid360不仅体积小巧&#xff0c;而且扫描频率高达100Hz&#xff0c;特别适合用在移动机器人上做实时避障。记得去年给一个…...

DBShadow横空出世,Dapper.net的天花板盖不住了

一、DBShadow是什么DBShadow是.net开源的高性能ORMDBShadow使用开源项目ShadowSql高效拼接sqlDBShadow使用开源项目PocoEmit.Mapper高效映射查询参数和查询结果也就是说SqlBuilder(ShadowSql)OOM(PocoEmit.Mapper)ORM(DBShadow)二、DBShadow和Dapper对比一下1. Dapper代码await…...

Klipper温度曲线优化终极指南:三步解决95%打印质量问题

Klipper温度曲线优化终极指南&#xff1a;三步解决95%打印质量问题 【免费下载链接】klipper Klipper is a 3d-printer firmware 项目地址: https://gitcode.com/GitHub_Trending/kl/klipper 你是否曾为PLA打印翘边、ABS层间开裂或PETG拉丝问题而烦恼&#xff1f;这些问…...

2026年,亳州钢筋网片厂家有何亮点?

在建筑行业蓬勃发展的当下&#xff0c;钢筋网片作为建筑施工中不可或缺的材料&#xff0c;其质量和供应能力直接影响着工程的质量和进度。2026年&#xff0c;亳州的钢筋网片市场竞争激烈&#xff0c;其中安平县齐宇丝网制品有限公司&#xff08;以下简称“齐宇公司”&#xff0…...

WHUCS—OS—lab实验:从零实现一个用户态定时器

1. 用户态定时器实现原理 在操作系统中&#xff0c;定时器是一个非常重要的基础功能。想象一下你每天早上依赖的闹钟 - 它会在特定时间准时响起&#xff0c;提醒你该起床了。用户态定时器的工作原理与此类似&#xff0c;只不过它是在程序运行时提供定时提醒功能。 xv6作为一个…...

LeetCode26. 删除有序数组中的重复项 27. 移除元素 35. 搜索插入位置 数组,双指针 二分查找

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k。去重后&#xf…...

无人机飞控实战:四元数微分方程在PX4中的实现与调参技巧

无人机飞控实战&#xff1a;四元数微分方程在PX4中的实现与调参技巧 当无人机在复杂环境中执行高速机动时&#xff0c;传统欧拉角描述姿态会出现万向节锁死现象。去年调试一台行业级六旋翼时&#xff0c;就曾遇到俯仰角接近90时控制器突然发散的情况——这正是欧拉角奇异点的典…...

langchain4j 学习系列(9)-AIService与可观测性

一、基本用法1.1 定义业务接口View Code注&#xff1a;{{it}}是langchain4j内部约定的默认占位符名。当只有1个参数时&#xff0c;{{it}}在运行时&#xff0c;会自动替换成用户的prompt. 当然也可以强制指定参数名&#xff0c;就本示例而言&#xff0c;注释的二种写法&#xff…...