当前位置: 首页 > 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 的最新功能可以灵活地支持不同规模和复杂度的项目测试需求。

http://www.lryc.cn/news/451759.html

相关文章:

  • 八、跳跃、闪避
  • 使用辅助分类器 GAN 进行条件图像合成
  • C#中的static关键字:静态成员与单例模式的实现
  • 【优选算法】(第八篇)
  • 告别PPT熬夜!Kimi+AIPPT一键生成PPT,效率upup!
  • 大语言模型在构建UNSPSC 分类数据中的应用
  • C++初阶:STL详解(十)——priority_queue的介绍,使用以及模拟实现
  • Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)
  • 【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁
  • 【力扣 | SQL题 | 每日三题】力扣1148, 1327, 1211, 1174
  • 【鸿蒙开发】详解GridRowSizeOption的尺寸属性
  • Sping源码:三级缓存
  • latex有哪些颜色中文叫什么,Python绘制出来
  • C语言进程
  • C#基础(4)封装——成员方法
  • springbot,JWT令牌的使用。实现http请求拦截校验。
  • 【SQL】DDL语句
  • 【分页】Spring Boot 列表分页 + javaScript前台展示
  • 「安装」 Windows下安装CUDA和Pytorch
  • c语言基础作业
  • uniapp view增加删除线
  • [Day 83] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • Java ReentrantLock
  • 【Linux系统编程】第二十六弹---彻底掌握文件I/O:C/C++文件接口与Linux系统调用实践
  • 数据分析-29-基于pandas的窗口操作和对JSON格式数据的处理
  • Ubuntu-WSL2一键设置代理操作
  • ubuntu命令行连接wifi
  • 日常工作第10天:
  • CNN+Transformer解说
  • jmeter中token测试