0


maven-surefire-plugin

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

maven-surefire-plugin官网

 (opens new window)

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

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

<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>

1234567891011

mvn test

相关信息

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

  1. maven-surefire-plugin的常用参数及作用
  2. maven-surefire-plugin实现单测的原理
<!-- 先声明插件版本 --><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>

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

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

maven-surefire-plugin

,入口就是在SurefirePlugin类。

大多数为不常用的
是否常用参数名使用方法解释常用skipTests-D,或者xml配置标签用于跳过单测常用maven.test.skip.exec-D,或者xml配置标签用于跳过单测常用maven.test.skip-D,或者xml配置标签用于跳过单测不常用testClassesDirectoryxml配置标签指定测试模块目录编译后目录不常用maven.test.dependency.excludes-D,或者xml配置标签要排除的依赖,格式:groupId:artifactId不常用maven.test.additionalClasspath-D,或者xml配置标签追加classpath不常用project.build.testSourceDirectoryxml配置标签指定测试模块目录源码目录不常用excludesxml配置指定规则的类不需要被单测,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”。

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

123456789

标签: maven junit java

本文转载自: https://blog.csdn.net/Message_lx/article/details/125858026
版权归原作者 西魏陶渊明 所有, 如有侵权,请联系我们删除。

“maven-surefire-plugin”的评论:

还没有评论