maven-surefire-plugin

这篇具有很好参考价值的文章主要介绍了maven-surefire-plugin。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

maven-surefire-plugin Surefire 插件在test构建生命周期阶段用于执行应用程序的单元测试。

maven-surefire-plugin,maven,junit,java,单元测试,开发语言

maven-surefire-plugin官网 (opens new window)

# 一、介绍

如果你执行过mvn test或者执行其他maven命令时跑了测试用例,你就已经用过maven-surefire-plugin了。 maven-surefire-plugin是maven里执行测试用例的插件,不显示配置就会用默认配置。 这个插件的surefire:test命令会默认绑定maven执行的test阶段。

如果你自己声明了,那么可以指定自己的版本,并且可以配置自定义的参数。

# 二、实践

# 2.1 用法

<build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
1 2 3 4 5 6 7 8 9 10 11

# 2.2 使用方法

mvn test

# 三、源码分析

# 3.1 学习目标

相关信息

框架整体比较复杂,但是对于我们有学习价值的东西不多,我们没必要太深入研究。在此只提几个关键的知识点学习。

  1. maven-surefire-plugin的常用参数及作用
  2. maven-surefire-plugin实现单测的原理

# 3.2 学习搭建环境

<!-- 先声明插件版本 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
                <version>2.22.0</version>
            </plugin>
        </plugins>
    </build>
    <!-- 然后引入依赖,方便debug跟进源码-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13.2</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M5</version>
      </dependency>

      <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-core</artifactId>
          <version>3.8.4</version>
      </dependency>

      <dependency>
          <groupId>org.apache.maven.surefire</groupId>
          <artifactId>surefire-junit4</artifactId>
          <version>3.0.0-M5</version>
      </dependency>

      <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-plugin-api</artifactId>
          <version>${dep.maven-api.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-model</artifactId>
          <version>${dep.maven-api.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.maven.plugin-tools</groupId>
          <artifactId>maven-plugin-annotations</artifactId>
          <version>${dep.maven-api.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>${dep.maven-api.version}</version>
      </dependency>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

# 3.3 找到插件入口

maven-surefire-plugin,maven,junit,java,单元测试,开发语言

前面通过学习知道Mojo是运行的核心类,而SurefirePlugin就是Mojo的子类。 由此可知,如果要学习这个 maven-surefire-plugin,入口就是在SurefirePlugin类。

maven-surefire-plugin,maven,junit,java,单元测试,开发语言

maven-surefire-plugin,maven,junit,java,单元测试,开发语言

# 四、 带着问题来学习

# 4.1 常用的参数都有那些

大多数为不常用的

是否常用 参数名 使用方法 解释
常用 skipTests -D,或者xml配置标签 用于跳过单测
常用 maven.test.skip.exec -D,或者xml配置标签 用于跳过单测
常用 maven.test.skip -D,或者xml配置标签 用于跳过单测
不常用 testClassesDirectory xml配置标签 指定测试模块目录编译后目录
不常用 maven.test.dependency.excludes -D,或者xml配置标签 要排除的依赖,格式:groupId:artifactId
不常用 maven.test.additionalClasspath -D,或者xml配置标签 追加classpath
不常用 project.build.testSourceDirectory xml配置标签 指定测试模块目录源码目录
不常用 excludes xml配置 指定规则的类不需要被单测,eg: **/*Test.java
不常用 surefire.reportNameSuffix -D,或者xml配置标签 test报表后缀
不常用 maven.test.redirectTestOutputToFile -D,或者xml配置标签 运行的单侧输出重定向到report目录中
不常用 failIfNoTests -D,或者xml配置标签 如果没有单测就报错
不常用 forkMode -D,或者xml配置标签 运行模式
不常用 jvm -D,或者xml配置标签 指定jvm目录,如果不指定会读取系统
不常用 argLine -D,或者xml配置标签 Jvm运行参数
不常用 threadCount -D,或者xml配置标签 线程数
不常用 forkCount -D,或者xml配置标签 指定启用多少个vm,1.5C 以数字结尾,数字乘以cpu核心数
不常用 reuseForks -D,或者xml配置标签 是否可重新使用forks进程
不常用 disableXmlReport -D,或者xml配置标签 禁用xml报告
不常用 enableassertions -D,或者xml配置标签 启用断言assert语句

forkMode 可设置值有 “never”, “once”, “always” 和 “pertest”。文章来源地址https://www.toymoban.com/news/detail-800328.html

  • pretest: 每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归。
  • once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置。
  • always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供这个功能,

# 4.2 知识点

// 大于等于2.0.0,小于2.1.2
VersionRange range = VersionRange.createFromVersionSpec("[2.0.0,2.1.2)");
System.out.println(range.containsVersion(new DefaultArtifactVersion("1.0")));
System.out.println(range.containsVersion(new DefaultArtifactVersion("2.0.0")));
System.out.println(range.containsVersion(new DefaultArtifactVersion("2.1.1")));
System.out.println(range.containsVersion(new DefaultArtifactVersion("2.1.2")));
System.out.println("------------");
VersionRange range2 = VersionRange.createFromVersionSpec("[2.0.0-M1SN,2.1.2)");
System.out.println(range2.containsVersion(new DefaultArtifactVersion("2.1.1-M2")));
1 2 3 4 5 6 7 8 9

到了这里,关于maven-surefire-plugin的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot打包错误:Please refer to xxx\target\surefire-reports for the individual test results

    方法一: 想必是有人也没有这个闪电图标,原因是IDEA版本的问题,你可以找找 这个图标的意思是 切换“跳过测试”模式 ,当图标背景 置灰 后就可以了 方法二:修改pom.xml文件 不出意外的话问题就解决了,成功的样子

    2024年02月13日
    浏览(44)
  • 【Maven】你好,Maven >>> 与Maven的初次见面~

    个人主页:.29.的博客 学习社区:进去逛一逛~ 个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的道路上摸爬滚打,记录学习的过程~ Apache Maven是一个软件项目管理和综合工具,是 Apache 下的一个纯 Java 开发的开源项目,基于项目对象模型

    2023年04月08日
    浏览(37)
  • 【Maven】让maven更高效,优化maven构建项目速度

    打开idea的setting,找到maven,设置它多线程数,重启后即可! 我这里是8,你们可以随便设置。 如下图:

    2024年02月14日
    浏览(49)
  • Maven介绍与配置+IDEA集成Maven+使用Maven命令

    目录 一、Maven简介 二、配置环境变量 三、IDEA集成Maven  1.配置本地仓库地址 2.集成Maven 3. pom.xml文件介绍 四、Maven命令 jar包太多、jar包相互依赖、不方便管理、项目编译还需要jar包,Maven工具来帮你! Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的 项目构建管理工具

    2024年02月11日
    浏览(40)
  • 【Maven】001-Maven 概述

    Maven 作为依赖管理工具 依赖管理: Maven 能够有效地管理项目中的 各种依赖关系 ,包括第三方库、框架等。通过Maven,你可以在项目中 声明 所需的依赖项及其版本,Maven将 自动 下载并构建项目所需的库, 简化 了项目配置和管理的过程。 总结:声明依赖及版本 = 自动下载

    2024年01月22日
    浏览(32)
  • 【Maven二】——maven仓库

    Maven之POM介绍 maven命令上传jar包到nexus 由于在具体项目开发过程中对于maven的理解和掌握处于基本运用的阶段,了解maven过于片面,所以本篇博客是博主学习《maven实战》书籍之后的总结,绝大多数内容源于《maven》实战这本书籍。 在maven世界中,任何一个依赖,插件或者项目构

    2024年02月16日
    浏览(104)
  • maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven

    添加第三方jar包 jar包之间的依赖关系 处理jar包之间的冲突 获取第三方jar包 将项目拆分成多个工程模块 实现项目的分布式部署 ​ Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 ​ Maven 除了以程序构建能力为特色之外,

    2024年02月12日
    浏览(59)
  • 【Maven】Maven的常用命令

    一、Maven的常用命令 1、compile 编译命令  2、test 测试命令  3 、clean 清理命令 4、package 打包命令 5、 install 安装命令 6、Maven 指令的生命周期 二、maven 的概念模型 💟 创作不易,不妨 点赞 💚 评论 ❤️ 收藏 💙 一下 我们可以在cmd 中通过一系列的 maven 命令来对我们的 maven

    2024年02月06日
    浏览(40)
  • 【Maven】Maven配置国内镜像

    网上配置maven国内镜像的文章很多,为什么选择我,原因是:一次配置得永生、仓库覆盖广、仓库覆盖全面、作者自用的配置。 复制就完事了 复制就完事了 如下图在框框处引用你自己的maven本地地址,点击应用点击OK。然后重新刷新您的maven项目看看是不是在下载jar包。 ide

    2024年02月15日
    浏览(50)
  • Maven(一):什么是Maven?

    新星计划,等你来造,一起学习进步! 7月3日-7月15日期间,完成计划任务,完成打卡赢好礼,活动报名链接如下:点击跳转 活动奖励: ❀【新秀奖】新注册用户发布第一篇文章(500字以上)获得电子【新秀勋章】; ❀【基础奖】完成任务挑战用户可获专属电子勋章(潜力新

    2023年04月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包