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

Maven Surefire 插件简介

Maven Surefire 插件是 Maven 构建系统中的一个关键组件,专门用于在构建生命周期中执行单元测试。

它通常与 Maven 构建生命周期的测试阶段绑定,确保所有单元测试在项目编译后和打包前被执行。

最新版本

Maven Surefire 插件的最新版本为 3.5.2

使用最新版本可以确保访问到最新的特性和改进。

配置 Maven Surefire 插件

要使用 Maven Surefire 插件,您需要在项目的 pom.xml 文件中进行配置。下面将通过步骤介绍如何在一个 Maven 项目中设置 Surefire 插件。

步骤 1: 创建 Maven 项目

运行以下命令创建一个新的 Maven 项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=surefire-plugin-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

该命令会生成一个简单的 Maven 项目,其目录结构如下:

surefire-plugin-demo
|-- src
|   |-- main
|   |   `-- java
|   |       `-- com
|   |           `-- example
|   |               `-- App.java
|   `-- test
|       `-- java
|           `-- com
|               `-- example
|                   `-- AppTest.java
|-- pom.xml
`-- target
步骤 2: 添加 Maven Surefire 插件配置

进入项目目录并打开 pom.xml 文件,在 <build> 标签内添加 Maven Surefire 插件的配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>surefire-plugin-demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.2</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.8.2</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M8</version></plugin></plugins></build>
</project>
  • <groupId>: 指定 Maven Surefire 插件的组ID。
  • <artifactId>: 指定 Maven Surefire 插件。
  • <version>: 使用的插件版本。请确保使用最新版本。
步骤 3: 创建单元测试

src/test/java 目录下创建一个单元测试文件,例如 AppTest.java

package com.example;import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;public class AppTest {@Testpublic void sampleTest() {System.out.println("正在运行单元测试...");assertTrue(true);}
}
步骤 4: 构建并运行单元测试

使用以下命令构建项目并运行单元测试:

mvn clean test

构建完成后,单元测试将在测试阶段运行。

步骤 5: 查看结果

输出将包括单元测试的结果:

-------------------------------------------------------T E S T S
-------------------------------------------------------
运行 com.example.AppTest
正在运行单元测试...
测试运行数: 1, 失败数: 0, 错误数: 0, 跳过数: 0, 总耗时: 0.001 秒
结果:测试运行数: 1, 失败数: 0, 错误数: 0, 跳过数: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

高级配置

Maven Surefire 插件提供了多种配置选项来定制测试行为。以下是一些常用的配置示例:

指定测试包含/排除规则

可以在 <plugin> 标签内添加以下配置来指定要包含或排除的测试:

<configuration><includes><include>**/*Test.java</include><include>**/*Tests.java</include><include>**/*TestCase.java</include></includes><excludes><exclude>**/*IntegrationTest.java</exclude></excludes>
</configuration>
设置系统属性

可以设置系统属性,使这些属性在测试中可用:

<configuration><systemPropertyVariables><propertyName>propertyValue</propertyName></systemPropertyVariables>
</configuration>
并行运行测试

可以通过以下配置并行运行测试以加速测试过程:

<configuration><parallel>methods</parallel><threadCount>4</threadCount>
</configuration>

总结

Maven Surefire 插件是 Maven 项目中运行单元测试的重要工具。

通过使用此插件,可以确保在构建过程中运行单元测试,有助于保持代码质量并及早发现问题。

本指南全面介绍了设置和使用 Maven Surefire 插件的方法,并提供了一个实际示例帮助您入门。

掌握这些知识后,您可以有效地管理和运行 Maven 项目中的单元测试。

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

相关文章:

  • 基于微信小程序的平价药房管理系统+LW参考示例
  • react 前端最后阶段静态服务器启动命令
  • Flink中普通API的使用
  • 高性能 ArkUI 应用开发:复杂 UI 场景中的内存管理与 XML 优化
  • 用天翼云搭建一个HivisionIDPhoto证件照处理网站
  • 【算法一周目】滑动窗口(2)
  • Zustand:一个轻量级的React状态管理库
  • C++练级计划->《单例模式》懒汉和饿汉
  • SQL for XML
  • 如何使用GCC手动编译stm32程序
  • 在线绘制Nature Communication同款双色、四色火山图,突出感兴趣的基因
  • C语言:C语言实现对MySQL数据库表增删改查功能
  • C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
  • 刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
  • 深入了解决策树---机器学习中的经典算法
  • Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
  • 深度学习模型:循环神经网络(RNN)
  • 前端---HTML(一)
  • SQL 复杂查询
  • 银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
  • 抓包之使用chrome的network面板
  • 避坑ffmpeg直接获取视频fps不准确
  • 大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)
  • 深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例
  • 【java】sdkman-java多环境切换工具
  • 11.25c++继承、多态
  • STM32F103外部中断配置
  • 阿里电商大整合,驶向价值竞争新航道
  • 等保测评在云计算方面的应用讲解
  • QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)