在 GitHub 上叉我

万无一失:测试

全名

org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test

说明

使用 Surefire 运行测试。

属性

  • 需要执行一个 Maven 项目。
  • 需要范围内工件的依赖性解析:测试。
  • 默认绑定到生命周期阶段:测试。

必需参数

姓名 类型 自从 描述
<测试源目录> 文件 2.2 包含测试类源的测试源目录。
默认值为:${project.build.testSourceDirectory}。

可选参数

姓名 类型 自从 描述
<附加类路径元素> 细绳[] 2.4 要附加到类路径的其他元素。
用户属性是:maven.test.additionalClasspath。
<参数线> 细绳 2.1 在命令行上设置的任意 JVM 选项。

由于 2.17 版使用 argLine 的替代语法,@{...}允许在执行插件时延迟替换属性,因此已被其他插件修改的属性将被正确拾取。有关更多详细信息,请参阅常见问题页面:http: //maven.apache.org/surefire/maven-surefire-plugin/faq.html
http://maven.apache.org/surefire/maven-failsafe-plugin/faq
.html
用户属性是:argLine。
<childDelegation> 布尔值 2.1 当为 false 时,它​​使测试使用标准的类加载器委托而不是默认的 Maven 隔离类加载器运行。仅在分叉时使用(forkMode 不是 none)。
将其设置为 false 有助于解决由类路径中的 xml 解析器与 Java 5 提供程序解析器之间的冲突引起的一些问题。
默认值为:假。
用户属性是:childDelegation。
<类目录> 文件 - 包含正在测试的项目的生成类的目录。这将包含在测试类路径中的测试类之后。
默认值为:${project.build.outputDirectory}。
<classpathDependencyExcludes> 细绳[] 2.6 要从测试类路径中排除的依赖项列表。每个依赖项字符串必须遵循groupId:artifactId格式。例如:org.acme:project -a
用户属性为:maven.test.dependency.excludes。
<classpathDependencyScopeExclude> 细绳 2.6 要从测试类路径中排除的依赖范围。范围应该是 org.apache.maven.artifact.Artifact 定义的范围之一。这包括以下内容:
  • compile - 系统,提供,编译
  • 运行时- 编译,运行时
  • compile+runtime - 系统,提供,编译,运行时
  • runtime+system - 系统、编译、运行时
  • 测试- 系统、提供、编译、运行时、测试

<consoleOutputReporter> SurefireConsoleOutputReporter - (没有说明)
<debugForkedProcess> 细绳 2.4 将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他通过 argLine 参数指定的选项)。
用户属性是:maven.surefire.debug。
<dependenciesToScan> 细绳[] 2.15 要扫描测试类以包含在测试运行中的依赖项列表。此元素的子元素必须是 <dependency> 元素,并且每个元素的内容必须是遵循一般形式的字符串:

groupId[:artifactId[:type[:classifier][:version]]]

通配符 * 可以在这些复合标识符的子部分中使用,以进行类似 glob 的模式匹配。在没有分类器的情况下匹配依赖项时,可以省略分类器。

例子:

  • 组或等价的组:*
  • g*p:*rtifac*
  • 组:*:罐子
  • group:artifact:*:1.0.0(无分类器)
  • 组:*:测试罐:测试
  • *:artifact:*:*:1.0.0

从 2.22.0 版开始,您可以从多模块项目的项目依赖项中扫描测试类。

在 3.0.0-M4 之前的版本中,仅支持 groupId:artifactId。


用户属性是:dependenciesToScan。
<disableXmlReport> 布尔值 2.2 标志以禁用生成 xml 格式的报告文件。自 3.0.0-M4 起已弃用。从 3.0.0-M6 开始,改为在 statelessTestsetReporter 中使用禁用。
默认值为:假。
用户属性是:disableXmlReport。
<启用断言> 布尔值 2.3.1 默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为“false”。
默认值为:真。
用户属性是:enableAssertions。
<启用进程检查器> 细绳 3.0.0-M4 从 3.0.0-M4 开始,进程检查器被禁用。您可以通过在此参数中设置 ping 和 native 或 all 来启用它们。
当您终止 CI 系统上的构建并且您希望 Surefire 分叉的 JVM 尽快终止测试并释放文件系统上之前由 JVM 和测试使用的所有处理程序时,检查器很有用。
ping 应与 ZGC 或 Shenandoah Garbage Collector 一起安全使用。由于 ping 依赖于 PING 的计时(每 30 秒触发一次),慢速 GC 可能会暂停计时器并假装分叉 JVM 的父进程不存在。
本机是非常快速的检查器。它在基于 Unix 的系统、Linux 发行版和 Alpine/BusyBox Linux 上非常有用。请参阅 JIRA SUREFIRE-1631 对于 Windows 问题。
另一个有用的配置参数是 forkedProcessTimeoutInSeconds。
有关更多详细信息,请参阅常见问题页面:http: //maven.apache.org/surefire/maven-surefire-plugin/faq.html#kill-jvm
http://maven.apache.org/surefire/maven-failsafe
-plugin/faq.html#kill-jvm
使用示例:
mvn test -Dsurefire.enableProcessChecker=all
用户属性为:surefire.enableProcessChecker。
<编码> 细绳 3.0.0-M1 生成测试报告文件时应用的字符编码方案(参见 target/surefire-reports/yourTestName.txt)。如果未另外设置,报告输出文件 (*-out.txt) 以 UTF-8 编码。
默认值为:${project.reporting.outputEncoding}。
用户属性是:surefire.encoding。
<环境变量> 地图 2.1.3 要在命令行上设置的其他环境变量。
<excludedEnvironmentVariables> 细绳[] 3.0.0-M4 您可以通过枚举它们的键来选择性地排除单个环境变量。
环境是从键到值的系统相关映射,从 Maven 进程继承到派生的 Surefire 进程。键必须逐字(区分大小写)匹配以排除它们的环境变量。
排除三个环境变量的示例:
mvn test -Dsurefire.excludedEnvironmentVariables=ACME1,ACME2,ACME3
用户属性为:surefire.excludedEnvironmentVariables。
<排除组> 细绳 2.2 (自 2.22.0 起仅具有 JUnit4.8+ 和 JUnit5+ 提供程序的 TestNG/JUnit47 提供程序)排除的组/类别/标签。任何具有此列表中指定的组/类别/标签之一的方法/类/等都不会运行。
对于 JUnit4,此参数强制使用 4.7 提供程序。对于 JUnit5,此参数强制使用 JUnit 平台提供程序。
如果指定了 suiteXmlFiles 参数,则忽略此参数。
从版本 2.18.1 和 JUnit 4.12 开始,@Category 注释类型自动从超类继承,请参阅@java.lang.annotation.Inherited。确保测试类继承与超类中出现的 JUnit 4.12 或更高版本的 @Category 注释一起仍然有意义。
用户属性是:excludedGroups。
<不包括> 列表 - <exclude> 元素列表,指定应在测试中排除的测试(按模式)。当未指定和未指定测试参数时,默认排除将是

<excludes>
    <exclude>**/*$*</exclude>
</excludes>

(不包括所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
每个排除项目还可能包含一个以逗号分隔的项目子列表,这些项目将被视为多个 <exclude> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


<exclude>%regex[pkg.*Slow.*.class], Unstable*</exclude>


请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
<排除文件> 文件 2.13 包含排除模式的文件。空白行或以 # 开头的行将被忽略。如果还指定了排除项,则会附加这些模式。带有路径、简单和正则表达式的示例不包括:

*/test/*
**/DontRunTest.*
%regex[.*Test.*|.*Not.*]


用户属性是:surefire.excludesFile。
<failIfNoSpecifiedTests> 布尔值 2.12 如果 -Dtest=... 中指定的测试均未运行,则将此设置为“true”以导致失败。默认为“真”。
用户属性是:surefire.failIfNoSpecifiedTests。
<failIfNoTests> 布尔值 2.4 如果没有要运行的测试,请将其设置为“true”以导致失败。默认为“假”。
用户属性是:failIfNoTests。
<forkCount> 细绳 2.14 用于指定并行分叉的 VM 数量以执行测试的选项。当以“C”结束时,数字部分乘以 CPU 内核数。浮点值仅与“C”一起接受。如果设置为“0”,则不会派生任何 VM,并且所有测试都在主进程中执行。

示例值:“1.5C”、“4”

分叉进程的系统属性和 argLine 可能包含占位符字符串 ${surefire.forkNumber},它被每个并行分叉的固定数字替换,范围从1到 forkCount 的有效值乘以 maven 并行构建中并行 Surefire 执行的最大数量,即 maven core的-T命令行参数的有效值。
默认值为: 1.
用户属性为:forkCount。
<分叉模式> 细绳 2.1 自 2.14 版起已弃用。请改用 forkCount 和 reuseForks。

指定分叉模式的选项。可以永远,一次,永远,perthread。
none 和 pertest 也被接受以实现向后兼容性。
每个测试类的总是分叉。
每个线程创建由 threadCount 指定的并行分支数量,其中每个分支的 JVM 正在执行一个测试类。另请参阅参数reuseForks 以了解JVM 的生命周期。
默认值为:一次。
用户属性是:forkMode。
<forkNode> 分叉节点工厂 3.0.0-M5 此参数配置分叉节点。目前,您可以选择通信协议,即进程管道或 TCP/IP 套接字。该插件默认使用进程管道,在 3.0.0 版本中将转换为 TCP/IP。或者,您可以实现自己的工厂和 SPI。
有关更多详细信息,请参阅文档:
https ://maven.apache.org/plugins/maven-surefire-plugin/examples/process-communication.html
用户属性为:surefire.forkNode。
<forkedProcessExitTimeoutInSeconds> 整数 2.20 在给定的测试完成后,分叉进程通常会在没有任何明显延迟的情况下终止。如果特定测试启动了非守护线程,则进程挂起而不是被 System.exit() 正确终止。使用此参数可确定终止进程的超时时间。请参阅文档:http: //maven.apache.org/surefire/maven-surefire-plugin/examples/shutdown.html 如果为负整数,则变为默认的 30 秒后备值。
默认值为:30。
用户属性为:surefire.exitTimeout。
<forkedProcessTimeoutInSeconds> 整数 2.4 在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
用户属性是:surefire.timeout。
<组> 细绳 2.2 (自 2.22.0 起仅具有 JUnit4.8+ 和 JUnit5+ 提供程序的 TestNG/JUnit47 提供程序)此测试的组/类别/标签。如果指定,只有用此处指定的组/类别/标签之一装饰的类/方法/等才会包含在测试运行中。
对于 JUnit4 测试,此参数强制使用 4.7 提供程序。对于 JUnit5 测试,此参数强制使用 JUnit 平台提供程序。
如果指定了 suiteXmlFiles 参数,则忽略此参数。
从版本 2.18.1 和 JUnit 4.12 开始,@Category 注释类型自动从超类继承,请参阅@java.lang.annotation.Inherited。确保测试类继承与超类中出现的 JUnit 4.12 或更高版本的 @Category 注释一起仍然有意义。
用户属性是: 组。
<包括> 列表 - <include> 元素列表,指定应包含在测试中的测试(按模式)。当未指定和未指定测试参数时,默认包含将是

<includes>
    <include>**/Test*.java</include>
    <include>**/*Test.java</include>
    <include>**/*Tests.java</include>
    <include>**/*TestCase.java</include>
</includes>

每个包含项还可能包含一个以逗号分隔的项子列表,这些子项将被视为多个 <include> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


<include>%regex[.*[Cat|Dog].*], Basic????, !Unstable*</include>
<include>%regex[.*[Cat|Dog].*], !%regex[pkg.*Slow.*.class], pkg/**/*Fast*.java</include>


如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。

请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
<包含文件> 文件 2.13 包含包含模式的文件。空白行或以 # 开头的行将被忽略。如果还指定了包含,则附加这些模式。带有路径、简单和正则表达式的示例包括:

*/test/*
**/NotIncludedByDefault.java
%regex[.*Test.*|.*Not.*]


用户属性是:surefire.includesFile。
<jdk工具链> 地图 3.0.0-M5 和 Maven 3.3.x

允许通过 maven 工具链配置测试 jvm。这允许使用一个 jvm 构建项目并使用另一个 jvm 进行测试的配置。这类似于 jvm,但避免了硬编码路径。两个参数互斥(jvm胜)

例子:

(有关更多信息, 请参阅工具链指南)

<configuration>
       ...
       <jdkToolchain>
           <version>1.11</version>
       </jdkToolchain>
   </configuration>

   <configuration>
       ...
       <jdkToolchain>
           <version>1.8</version>
           <vendor>zulu</vendor>
       </jdkToolchain>
   </configuration>
   

<junitArtifactName> 细绳 2.3.1 允许您指定 JUnit 工件的名称。如果未设置,将使用 junit:junit。
默认值为:junit:junit。
用户属性是:junitArtifactName。
<jvm> 细绳 2.1 用于指定要与分叉选项一起使用的 jvm(或 java 可执行文件的路径)的选项。默认情况下,jvm 将是与用于运行 Maven 的虚拟机相同的虚拟机的新实例。JVM 设置不是从 MAVEN_OPTS 继承的。
用户属性是:jvm。
<对象工厂> 细绳 2.5 (仅限TestNG)定义用于创建所有测试实例的工厂类。
用户属性是:objectFactory。
<并行> 细绳 2.2 (TestNG 提供者)当您使用参数parallel 时,TestNG 将尝试在单独的线程中运行您的所有测试方法,但相互依赖的方法除外,它们将在同一线程中运行以尊重它们的执行顺序。
(JUnit 4.7 提供者)支持值类、方法,它们都在由 threadCount 控制的单独线程中运行。

从 2.16 版(JUnit 4.7 提供者)开始,两者的值都是DEPRECATED。请改用 classesAndMethods。

从 2.16 版(JUnit 4.7 提供者)开始,可以使用其他变量:
suites、suitesAndClasses、suitesAndMethods、classesAndMethods 等等。
默认情况下,Surefire 不会并行执行测试。您可以将参数parallel 设置为none 以显式禁用并行执行(例如,在执行覆盖分析时在特殊的Maven 配置文件中禁用并行执行时)。
用户属性是:并行。
<并行优化> 布尔值 2.17 (仅限 JUnit 4.7 / 提供者)如果设置为true,线程数不超过并行套件、类运行器的数量和每个类的平均方法数。
默认为真。
默认值为:真。
用户属性是:parallelOptimized。
<parallelTestsTimeoutForcedInSeconds> 双倍的 2.16 停止执行排队的并行 JUnit 测试并在一定秒数后中断当前正在运行的测试。
示例值:“3.5”、“4”

如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
用户属性是:surefire.parallel.forcedTimeout。
<parallelTestsTimeoutInSeconds> 双倍的 2.16 在一定秒数后停止执行排队的并行 JUnit 测试。
示例值:“3.5”、“4”

如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
用户属性是:surefire.parallel.timeout。
<perCoreThreadCount> 布尔值 2.5 (JUnit 4.7 提供程序)表示 threadCount、threadCountSuites、threadCountClasses、threadCountMethods 是每个 cpu 内核的。
默认值为:真。
用户属性是:perCoreThreadCount。
<打印摘要> 布尔值 - 打印测试套件摘要或仅打印有错误的测试用例的选项。
默认值为:真。
用户属性是:surefire.printSummary。
<属性> 特性 2.4 用于配置所有 TestNG 相关配置的属性列表。这是配置 TestNG 的新的首选方法。
<redirectTestOutputToFile> 布尔值 2.3 将此设置为“true”以将单元测试标准输出重定向到文件(在 reportsDirectory/testName-output.txt 中找到)。
默认值为:假。
用户属性是:maven.test.redirectTestOutputToFile。
<报告格式> 细绳 - 选择要生成的测试报告的格式。可以设置为“简要”或“简单”。仅适用于输出文件的输出格式(target/surefire-reports/testName.txt)
默认值为:brief。
用户属性是:surefire.reportFormat。
<报告名称后缀> 细绳 - 在报告文件名中添加自定义文本:TEST-testClassName-reportNameSuffix.xml、testClassName-reportNameSuffix.txt 和 testClassName-reportNameSuffix-output.txt。文件 TEST-testClassName-reportNameSuffix.xml 已更改属性 'testsuite'--'name' 和 'testcase'--'classname' - reportNameSuffix 添加到属性值。
用户属性是:surefire.reportNameSuffix。
<报告目录> 文件 - 写入所有报告的基本目录。
默认值为:${project.build.directory}/surefire-reports。
<重新运行失败测试计数> 整数 - (自 3.0.0-M4 以来的 JUnit 4+ 提供者和 JUnit 5+ 提供者)每个失败的测试将重新运行的次数。如果设置大于 0,则在失败后立即重新运行失败的测试。如果失败的测试在任何这些重新运行中通过,它将被标记为通过并报告为“薄片”。但是,将记录所有失败的尝试。
默认值为:0 。
用户属性为:surefire.rerunFailingTestsCount。
<reuseForks> 布尔值 2.13 指示是否可以重复使用分叉的 VM。如果设置为“false”,则为每个要执行的测试类派生一个新的 VM。如果设置为“true”,最多 forkCount 个虚拟机将被分叉,然后重新用于执行所有测试。
默认值为:真。
用户属性是:reuseForks。
<运行顺序> 细绳 2.7 定义运行测试的顺序。支持的值有字母、反向字母、随机、每小时(偶数小时的字母顺序、奇数小时的反向字母顺序)、失败优先、平衡和文件系统。

每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。

Failed first 将首先运行先前运行失败的测试,以及本次运行的新测试。

Balanced 仅与 parallel=classes 相关,并将尝试优化测试的运行顺序,从而减少整体执行时间。最初会创建一个统计文件,并且每次下一次测试运行都会重新排序类。

请注意,统计信息存储在名为 .surefire-XXXXXXXXX的文件中pom.xml并且不应检查到版本控制中。“XXXXX”是整个surefire配置的SHA1校验和,因此不同的配置会有不同的统计文件,这意味着如果您更改任何配置设置,您将重新运行一次,然后才能建立新的统计数据。
默认值为:文件系统。
用户属性是:surefire.runOrder。
<关机> 细绳 2.19 通过发送SIGTERM 信号 (CTRL+C)关闭插件进程后,每个分叉的 JVM 都会收到SHUTDOWN 命令。
该值默认设置为 (shutdown=exit)(在 3.0.0-M4 版本中更改)。
该参数可以配置其他两个值 testset 和 kill。
使用(shutdown=testset) 测试集可能仍会继续在分叉的 JVM 中运行。
在插件进程收到 SIGTERM 信号后,使用 exit forked JVM 执行 System.exit(1) 。
使用 kill JVM 会执行 Runtime.halt(1) 并杀死自己。
默认值为:退出。
用户属性是:surefire.shutdown。
<跳过> 布尔值 - 将此设置为“true”以完全绕过单元测试。不推荐使用它,特别是如果您使用“maven.test.skip”属性启用它,因为 maven.test.skip 会禁用运行测试和编译测试。请考虑改用 skipTests 参数。
默认值为:假。
用户属性是:maven.test.skip。
<skipAfterFailureCount> 整数 2.19 设置为错误/失败计数以跳过剩余的测试。由于并行/分叉执行中的竞争条件,这可能无法完全保证。
使用系统属性 -Dsurefire.skipAfterFailureCount=1 或任何大于零的数字启用。默认为“0”。
请参阅文档中的先决条件和限制:
http ://maven.apache.org/plugins/maven-surefire-plugin/examples/skip-after-failure.html
默认值为:0 。
用户属性为:surefire.skipAfterFailureCount。
<跳过执行> 布尔值 2.3 已弃用。请改用skipTests。
用户属性是:maven.test.skip.exec。
<跳过测试> 布尔值 2.4 将此设置为“true”以跳过正在运行的测试,但仍编译它们。不推荐使用它,但有时很方便。
Failsafe 插件弃用了参数 skipTests,该参数将在Failsafe 3.0.0中删除,因为它是 Failsafe 和 Surefire 插件之间冲突的来源。
默认值为:假。
用户属性是:skipTests。
<statelessTestsetInfoReporter> SurefireStatelessTestsetInfoReporter - (没有说明)
<statelessTestsetReporter> Surefire无状态记者 - 注意:使用遗留系统属性disableXmlReport设置为 true 来禁用报告。
<suiteXmlFiles> 文件[] 2.2 (TestNG) 指定 TestNG 套件 xml 文件位置的 <suiteXmlFile> 元素列表。请注意,suiteXmlFiles 与此插件的其他几个参数不兼容,例如包含和排除。
如果指定了 test 参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
用户属性是:surefire.suiteXmlFiles。
<系统属性> 特性 - 已弃用。请改用 systemPropertyVariables。
<系统属性文件> 文件 - (无描述)
用户属性是:surefire.systemPropertiesFile。
<系统属性变量> 地图 2.5 要传递给 JUnit 测试的系统属性列表。
<临时目录> 细绳 2.20 包含内部 Surefire 临时文件的temporary-surefire-boot目录的相对路径。在大多数平台上,temporary-surefire-boot 目录是 project.build.directory 或
Windows系统属性 java.io.tmpdir 指定的系统默认临时目录(参见SUREFIRE-1400)。
测试集完成后将其删除。
默认值为:万无一失。
用户属性是:tempDir。
<测试> 细绳 - 指定此参数以按文件名运行单个测试,覆盖参数包括和排除。您在此处指定的每个模式都将用于创建格式为 **/${test}.java 的包含模式,因此您只需键入 -Dtest=MyTest 即可运行名为“foo/MyTest.java”的单个测试。以!为前缀的测试模式 将被排除在外。
此参数覆盖参数包括、排除和 TestNG 参数 suiteXmlFiles。从 2.7.3 开始,您可以通过添加#myMethod#my*
ethod 在测试中执行有限数量的方法。例如,-Dtest=MyTest#myMethod。junit 4.x 和 TestNg 支持此功能。 从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


"-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, *Test#test*One+testTwo?????, #fast*+slowTest"
或者例如

"-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]"

参数化 JUnit 运行器使用括号中的索引来描述测试方法,因此非正则表达式方法模式将变为:#testMethod[*]。如果使用@Parameters(name="{index}: fib({0})={1}") 并在模式中选择索引例如5,则非正则表达式方法模式将变为#testMethod[5:*]。
用户属性是:测试。
<测试类目录> 文件 - 包含正在测试的项目的生成测试类的目录。这将包含在测试类路径的开头。*
默认值为:${project.build.testOutputDirectory}。
<testFailureIgnore> 布尔值 - 将此设置为“true”以在测试期间忽略失败。不推荐使用它,但有时很方便。
默认值为:假。
用户属性是:maven.test.failure.ignore。
<testNGArtifactName> 细绳 2.3.1 允许您指定 TestNG 工件的名称。如果未设置,将使用 org.testng:testng。
默认值为:org.testng:testng。
用户属性是:testNGArtifactName。
<线程数> 整数 2.2 (TestNG/JUnit 4.7 提供者)属性thread-count 允许您指定应为此执行分配多少线程。仅与并行参数一起使用才有意义。
用户属性是:threadCount。
<threadCountClasses> 整数 2.16 (JUnit 4.7 提供者)此属性允许您在测试类中指定并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发类的数量
  • 如果 useUnlimitedThreads 设置为true ,则限制类并发
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。比如parallel=all,threadCountSuites:threadCountClasses:threadCountMethods的比例是2: 3 :5,并发类中有30%的threadCount。
  • 与前一种情况一样,但没有此叶线程数。示例:parallel=suitesAndClasses,threadCount=16,threadCountSuites=5,threadCountClasses 是未指定的叶子,并发类的数量从 >= 11 变化到 14 或 15。threadCountSuites 成为给定的线程数。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
默认值为:0 。
用户属性为:threadCountClasses。
<线程计数方法> 整数 2.16 (JUnit 4.7 提供者)此属性允许您在测试方法中指定并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发方法数
  • 如果 useUnlimitedThreads 设置为 true ,则方法的并发性受限
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。例如 parallel=all 和 threadCountSuites:threadCountClasses:threadCountMethods 之间的比率是 2:3: 5,有 50% 的 threadCount 出现在并发方法中。
  • 与前一种情况一样,但没有此叶线程数。示例:parallel=all, threadCount=16, threadCountSuites=2, threadCountClasses=3,但是 threadCountMethods 是未指定的叶子,并发方法的数量从 >= 11 变化到 14 或 15。threadCountSuites 和 threadCountClasses 成为给定的线程数。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
默认值为:0 。
用户属性为:threadCountMethods。
<threadCountSuites> 整数 2.16 (JUnit 4.7 提供者)此属性允许您指定测试套件中的并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发套件的数量
  • 如果 useUnlimitedThreads 设置为true ,则限制套件的并发性
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。比如parallel=all,threadCountSuites:threadCountClasses:threadCountMethods的比例是2 :3:5,有20%的threadCount出现在并发套件中。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
默认值为:0 。
用户属性为:threadCountSuites。
<trimStackTrace> 布尔值 2.2 是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
默认值为:真。
用户属性是:trimStackTrace。
<使用文件> 布尔值 - 生成文件测试报告或仅将测试报告输出到控制台的选项。
默认值为:真。
用户属性是:surefire.useFile。
<useManifestOnlyJar> 布尔值 2.4.3 默认情况下,Surefire 使用仅清单 JAR 分叉您的测试;将此参数设置为“false”以强制它使用普通的旧 Java 类路径启动您的测试。(请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html 以获取有关仅清单 JAR 及其好处的更详细说明。)
请注意,将此设置为“false” " 如果你的类路径太长,可能会导致你的测试在 Windows 上失败。
默认值为:真。
用户属性是:surefire.useManifestOnlyJar。
<useModulePath> 布尔值 3.0.0-M2 即使 在项目中使用了module-info.java ,也会禁用模块化路径(自 Java 9 起也称为 Jigsaw 项目) 。
默认启用。如果启用,module-info.java存在并使用 JDK 9+ 执行,使用模块化路径。
默认值为:真。
用户属性是:surefire.useModulePath。
<使用系统类加载器> 布尔值 2.3 将依赖项传递给系统的类加载器的选项,而不是在分叉时使用隔离的类加载器。防止使用系统的 ClassLoader 实现服务提供者查找机制的 JDK 出现问题。
默认值为:真。
用户属性是:surefire.useSystemClassLoader。
<useUnlimitedThreads> 布尔值 2.5 (JUnit 4.7 提供者)表示线程池将是无限的。并行参数和类/方法的实际数量将决定。将此设置为“true”会有效地禁用 perCoreThreadCount 和 threadCount。默认为“假”。
默认值为:假。
用户属性是:useUnlimitedThreads。
<工作目录> 文件 2.1.3 命令行工作目录。
用户属性是:basedir。

参数详情

<附加类路径元素>

要附加到类路径的其他元素。
  • 类型:java.lang.String[]
  • : 2.4
  • 要求:否
  • 用户属性:maven.test.additionalClasspath

<参数线>

在命令行上设置的任意 JVM 选项。

由于 2.17 版使用 argLine 的替代语法,@{...}允许在执行插件时延迟替换属性,因此已被其他插件修改的属性将被正确拾取。有关更多详细信息,请参阅常见问题页面:http: //maven.apache.org/surefire/maven-surefire-plugin/faq.html
http://maven.apache.org/surefire/maven-failsafe-plugin/faq
.html
  • 类型:java.lang.String
  • : 2.1
  • 要求:否
  • 用户属性:argLine

<childDelegation>

当为 false 时,它​​使测试使用标准的类加载器委托而不是默认的 Maven 隔离类加载器运行。仅在分叉时使用(forkMode 不是 none)。
将其设置为 false 有助于解决由类路径中的 xml 解析器与 Java 5 提供程序解析器之间的冲突引起的一些问题。
  • 类型:布尔值
  • : 2.1
  • 要求:否
  • 用户属性:childDelegation
  • 默认值:假

<类目录>

包含正在测试的项目的生成类的目录。这将包含在测试类路径中的测试类之后。
  • 类型:java.io.File
  • 要求:否
  • 默认值:${project.build.outputDirectory}

<classpathDependencyExcludes>

要从测试类路径中排除的依赖项列表。每个依赖项字符串必须遵循groupId:artifactId格式。例如:org.acme:project-a
  • 类型:java.lang.String[]
  • : 2.6
  • 要求:否
  • 用户属性:maven.test.dependency.excludes

<classpathDependencyScopeExclude>

要从测试类路径中排除的依赖范围。范围应该是 org.apache.maven.artifact.Artifact 定义的范围之一。这包括以下内容:
  • compile - 系统,提供,编译
  • 运行时- 编译,运行时
  • compile+runtime - 系统,提供,编译,运行时
  • runtime+system - 系统、编译、运行时
  • 测试- 系统、提供、编译、运行时、测试
  • 类型:java.lang.String
  • : 2.6
  • 要求:否

<consoleOutputReporter>

(没有说明)
  • 类型:org.apache.maven.plugin.surefire.extensions.SurefireConsoleOutputReporter
  • 要求:否

<debugForkedProcess>

将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他通过 argLine 参数指定的选项)。
  • 类型:java.lang.String
  • : 2.4
  • 要求:否
  • 用户属性:maven.surefire.debug

<dependenciesToScan>

要扫描测试类以包含在测试运行中的依赖项列表。此元素的子元素必须是 <dependency> 元素,并且每个元素的内容必须是遵循一般形式的字符串:

groupId[:artifactId[:type[:classifier][:version]]]

通配符 * 可以在这些复合标识符的子部分中使用,以进行类似 glob 的模式匹配。在没有分类器的情况下匹配依赖项时,可以省略分类器。

例子:

  • 组或等价的组:*
  • g*p:*rtifac*
  • 组:*:罐子
  • group:artifact:*:1.0.0(无分类器)
  • 组:*:测试罐:测试
  • *:artifact:*:*:1.0.0

从 2.22.0 版开始,您可以从多模块项目的项目依赖项中扫描测试类。

在 3.0.0-M4 之前的版本中,仅支持 groupId:artifactId。

  • 类型:java.lang.String[]
  • : 2.15
  • 要求:否
  • 用户属性:dependenciesToScan

<disableXmlReport>

标志以禁用生成 xml 格式的报告文件。自 3.0.0-M4 起已弃用。从 3.0.0-M6 开始,改为在 statelessTestsetReporter 中使用禁用。
  • 类型:布尔值
  • : 2.2
  • 要求:否
  • 用户属性:disableXmlReport
  • 默认值:假

<启用断言>

默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为“false”。
  • 类型:布尔值
  • :2.3.1
  • 要求:否
  • 用户属性:启用断言
  • 默认值:真

<启用进程检查器>

从 3.0.0-M4 开始,进程检查器被禁用。您可以通过在此参数中设置 ping 和 native 或 all 来启用它们。
当您终止 CI 系统上的构建并且您希望 Surefire 分叉的 JVM 尽快终止测试并释放文件系统上之前由 JVM 和测试使用的所有处理程序时,检查器很有用。
ping 应与 ZGC 或 Shenandoah Garbage Collector 一起安全使用。由于 ping 依赖于 PING 的计时(每 30 秒触发一次),慢速 GC 可能会暂停计时器并假装分叉 JVM 的父进程不存在。
本机是非常快速的检查器。它在基于 Unix 的系统、Linux 发行版和 Alpine/BusyBox Linux 上非常有用。请参阅 JIRA SUREFIRE-1631 对于 Windows 问题。
另一个有用的配置参数是 forkedProcessTimeoutInSeconds。
有关更多详细信息,请参阅常见问题页面:http: //maven.apache.org/surefire/maven-surefire-plugin/faq.html#kill-jvm
http://maven.apache.org/surefire/maven-failsafe
-plugin/faq.html#kill-jvm
使用示例:
mvn test -Dsurefire.enableProcessChecker=all
  • 类型:java.lang.String
  • :3.0.0-M4
  • 要求:否
  • 用户属性:surefire.enableProcessChecker

<编码>

生成测试报告文件时应用的字符编码方案(参见 target/surefire-reports/yourTestName.txt)。如果未另外设置,报告输出文件 (*-out.txt) 以 UTF-8 编码。
  • 类型:java.lang.String
  • :3.0.0-M1
  • 要求:否
  • 用户属性:surefire.encoding
  • 默认值:${project.reporting.outputEncoding}

<环境变量>

要在命令行上设置的其他环境变量。
  • 类型:java.util.Map
  • :2.1.3
  • 要求:否

<excludedEnvironmentVariables>

您可以通过枚举它们的键来选择性地排除单个环境变量。
环境是从键到值的系统相关映射,从 Maven 进程继承到派生的 Surefire 进程。键必须逐字(区分大小写)匹配以排除它们的环境变量。
排除三个环境变量的示例:
mvn test -Dsurefire.excludedEnvironmentVariables=ACME1,ACME2,ACME3
  • 类型:java.lang.String[]
  • :3.0.0-M4
  • 要求:否
  • 用户属性:surefire.excludedEnvironmentVariables

<排除组>

(自 2.22.0 起仅具有 JUnit4.8+ 和 JUnit5+ 提供程序的 TestNG/JUnit47 提供程序)排除的组/类别/标签。任何具有此列表中指定的组/类别/标签之一的方法/类/等都不会运行。
对于 JUnit4,此参数强制使用 4.7 提供程序。对于 JUnit5,此参数强制使用 JUnit 平台提供程序。
如果指定了 suiteXmlFiles 参数,则忽略此参数。
从版本 2.18.1 和 JUnit 4.12 开始,@Category 注释类型自动从超类继承,请参阅@java.lang.annotation.Inherited。确保测试类继承与超类中出现的 JUnit 4.12 或更高版本的 @Category 注释一起仍然有意义。
  • 类型:java.lang.String
  • : 2.2
  • 要求:否
  • 用户属性:excludedGroups

<不包括>

<exclude> 元素列表,指定应在测试中排除的测试(按模式)。当未指定和未指定测试参数时,默认排除将是

<excludes>
    <exclude>**/*$*</exclude>
</excludes>

(不包括所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
每个排除项目还可能包含一个以逗号分隔的项目子列表,这些项目将被视为多个 <exclude> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


<exclude>%regex[pkg.*Slow.*.class], Unstable*</exclude>


请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
  • 类型:java.util.List
  • 要求:否

<排除文件>

包含排除模式的文件。空白行或以 # 开头的行将被忽略。如果还指定了排除项,则会附加这些模式。带有路径、简单和正则表达式的示例不包括:

*/test/*
**/DontRunTest.*
%regex[.*Test.*|.*Not.*]

  • 类型:java.io.File
  • : 2.13
  • 要求:否
  • 用户属性:surefire.excludesFile

<failIfNoSpecifiedTests>

如果 -Dtest=... 中指定的测试均未运行,则将此设置为“true”以导致失败。默认为“真”。
  • 类型:java.lang.Boolean
  • : 2.12
  • 要求:否
  • 用户属性:surefire.failIfNoSpecifiedTests

<failIfNoTests>

如果没有要运行的测试,请将其设置为“true”以导致失败。默认为“假”。
  • 类型:java.lang.Boolean
  • : 2.4
  • 要求:否
  • 用户属性:failIfNoTests

<forkCount>

用于指定并行分叉的 VM 数量以执行测试的选项。当以“C”结束时,数字部分乘以 CPU 内核数。浮点值仅与“C”一起接受。如果设置为“0”,则不会派生任何 VM,并且所有测试都在主进程中执行。

示例值:“1.5C”、“4”

分叉进程的系统属性和 argLine 可能包含占位符字符串 ${surefire.forkNumber},它被每个并行分叉的固定数字替换,范围从1到 forkCount 的有效值乘以 maven 并行构建中并行 Surefire 执行的最大数量,即
  • 类型:java.lang.String
  • : 2.14
  • 要求:否
  • 用户属性:forkCount
  • 默认值:1

<分叉模式>

自 2.14 版起已弃用。请改用 forkCount 和 reuseForks。

指定分叉模式的选项。可以永远,一次,永远,perthread。
none 和 pertest 也被接受以实现向后兼容性。
每个测试类的总是分叉。
每个线程创建由 threadCount 指定的并行分支数量,其中每个分支的 JVM 正在执行一个测试类。另请参阅参数reuseForks 以了解JVM 的生命周期。
  • 类型:java.lang.String
  • : 2.1
  • 要求:否
  • 用户属性:forkMode
  • 默认值:一次

<forkNode>

此参数配置分叉节点。目前,您可以选择通信协议,即进程管道或 TCP/IP 套接字。该插件默认使用进程管道,在 3.0.0 版本中将转换为 TCP/IP。或者,您可以实现自己的工厂和 SPI。
有关更多详细信息,请参阅文档:
https ://maven.apache.org/plugins/maven-surefire-plugin/examples/process-communication.html
  • 类型:org.apache.maven.surefire.extensions.ForkNodeFactory
  • :3.0.0-M5
  • 要求:否
  • 用户属性:surefire.forkNode

<forkedProcessExitTimeoutInSeconds>

在给定的测试完成后,分叉进程通常会在没有任何明显延迟的情况下终止。如果特定测试启动了非守护线程,则进程挂起而不是被 System.exit() 正确终止。使用此参数可确定终止进程的超时时间。请参阅文档:http: //maven.apache.org/surefire/maven-surefire-plugin/examples/shutdown.html 如果为负整数,则变为默认的 30 秒后备值。
  • 类型:整数
  • : 2.20
  • 要求:否
  • 用户属性:surefire.exitTimeout
  • 默认值:30

<forkedProcessTimeoutInSeconds>

在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
  • 类型:整数
  • : 2.4
  • 要求:否
  • 用户属性:surefire.timeout

<组>

(自 2.22.0 起仅具有 JUnit4.8+ 和 JUnit5+ 提供程序的 TestNG/JUnit47 提供程序)此测试的组/类别/标签。如果指定,只有用此处指定的组/类别/标签之一装饰的类/方法/等才会包含在测试运行中。
对于 JUnit4 测试,此参数强制使用 4.7 提供程序。对于 JUnit5 测试,此参数强制使用 JUnit 平台提供程序。
如果指定了 suiteXmlFiles 参数,则忽略此参数。
从版本 2.18.1 和 JUnit 4.12 开始,@Category 注释类型自动从超类继承,请参阅@java.lang.annotation.Inherited。确保测试类继承与超类中出现的 JUnit 4.12 或更高版本的 @Category 注释一起仍然有意义。
  • 类型:java.lang.String
  • : 2.2
  • 要求:否
  • 用户属性:组

<包括>

<include> 元素列表,指定应包含在测试中的测试(按模式)。当未指定和未指定测试参数时,默认包含将是

<includes>
    <include>**/Test*.java</include>
    <include>**/*Test.java</include>
    <include>**/*Tests.java</include>
    <include>**/*TestCase.java</include>
</includes>

每个包含项还可能包含一个以逗号分隔的项子列表,这些子项将被视为多个 <include> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


<include>%regex[.*[Cat|Dog].*], Basic????, !Unstable*</include>
<include>%regex[.*[Cat|Dog].*], !%regex[pkg.*Slow.*.class], pkg/**/*Fast*.java</include>


如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。

请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
  • 类型:java.util.List
  • 要求:否

<包含文件>

包含包含模式的文件。空白行或以 # 开头的行将被忽略。如果还指定了包含,则附加这些模式。带有路径、简单和正则表达式的示例包括:

*/test/*
**/NotIncludedByDefault.java
%regex[.*Test.*|.*Not.*]

  • 类型:java.io.File
  • : 2.13
  • 要求:否
  • 用户属性:surefire.includesFile

<jdk工具链>

允许通过 maven 工具链配置测试 jvm。这允许使用一个 jvm 构建项目并使用另一个 jvm 进行测试的配置。这类似于 jvm,但避免了硬编码路径。两个参数互斥(jvm胜)

例子:

(有关更多信息, 请参阅工具链指南)

<configuration>
       ...
       <jdkToolchain>
           <version>1.11</version>
       </jdkToolchain>
   </configuration>

   <configuration>
       ...
       <jdkToolchain>
           <version>1.8</version>
           <vendor>zulu</vendor>
       </jdkToolchain>
   </configuration>
   
  • 类型:java.util.Map
  • :3.0.0-M5 和 Maven 3.3.x
  • 要求:否

<junitArtifactName>

允许您指定 JUnit 工件的名称。如果未设置,将使用 junit:junit。
  • 类型:java.lang.String
  • :2.3.1
  • 要求:否
  • 用户属性:junitArtifactName
  • 默认值:junit:junit

<jvm>

用于指定要与分叉选项一起使用的 jvm(或 java 可执行文件的路径)的选项。默认情况下,jvm 将是与用于运行 Maven 的虚拟机相同的虚拟机的新实例。JVM 设置不是从 MAVEN_OPTS 继承的。
  • 类型:java.lang.String
  • : 2.1
  • 要求:否
  • 用户属性:jvm

<对象工厂>

(仅限TestNG)定义用于创建所有测试实例的工厂类。
  • 类型:java.lang.String
  • : 2.5
  • 要求:否
  • 用户属性:objectFactory

<并行>

(TestNG 提供者)当您使用参数parallel 时,TestNG 将尝试在单独的线程中运行您的所有测试方法,但相互依赖的方法除外,它们将在同一线程中运行以尊重它们的执行顺序。
(JUnit 4.7 提供者)支持值类、方法,它们都在由 threadCount 控制的单独线程中运行。

从 2.16 版(JUnit 4.7 提供者)开始,两者的值都是DEPRECATED。请改用 classesAndMethods。

从 2.16 版(JUnit 4.7 提供者)开始,可以使用其他变量:
suites、suitesAndClasses、suitesAndMethods、classesAndMethods 等等。
默认情况下,Surefire 不会并行执行测试。您可以将参数parallel 设置为none 以显式禁用并行执行(例如,在执行覆盖分析时在特殊的Maven 配置文件中禁用并行执行时)。
  • 类型:java.lang.String
  • : 2.2
  • 要求:否
  • 用户属性:并行

<并行优化>

(仅限 JUnit 4.7 / 提供者)如果设置为true,线程数不超过并行套件、类运行器的数量和每个类的平均方法数。
默认为真。
  • 类型:布尔值
  • : 2.17
  • 要求:否
  • 用户属性:parallelOptimized
  • 默认值:真

<parallelTestsTimeoutForcedInSeconds>

停止执行排队的并行 JUnit 测试并在一定秒数后中断当前正在运行的测试。
示例值:“3.5”、“4”

如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
  • 类型:双
  • : 2.16
  • 要求:否
  • 用户属性:surefire.parallel.forcedTimeout

<parallelTestsTimeoutInSeconds>

在一定秒数后停止执行排队的并行 JUnit 测试。
示例值:“3.5”、“4”

如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
  • 类型:双
  • : 2.16
  • 要求:否
  • 用户属性:surefire.parallel.timeout

<perCoreThreadCount>

(JUnit 4.7 提供程序)表示 threadCount、threadCountSuites、threadCountClasses、threadCountMethods 是每个 cpu 内核的。
  • 类型:布尔值
  • : 2.5
  • 要求:否
  • 用户属性:perCoreThreadCount
  • 默认值:真

<打印摘要>

打印测试套件摘要或仅打印有错误的测试用例的选项。
  • 类型:布尔值
  • 要求:否
  • 用户属性:surefire.printSummary
  • 默认值:真

<属性>

用于配置所有 TestNG 相关配置的属性列表。这是配置 TestNG 的新的首选方法。
  • 类型:java.util.Properties
  • : 2.4
  • 要求:否

<redirectTestOutputToFile>

将此设置为“true”以将单元测试标准输出重定向到文件(在 reportsDirectory/testName-output.txt 中找到)。
  • 类型:布尔值
  • : 2.3
  • 要求:否
  • 用户属性:maven.test.redirectTestOutputToFile
  • 默认值:假

<报告格式>

选择要生成的测试报告的格式。可以设置为“简要”或“简单”。仅适用于输出文件的输出格式(target/surefire-reports/testName.txt)
  • 类型:java.lang.String
  • 要求:否
  • 用户属性:surefire.reportFormat
  • 默认值:简短

<报告名称后缀>

在报告文件名中添加自定义文本:TEST-testClassName-reportNameSuffix.xml、testClassName-reportNameSuffix.txt 和 testClassName-reportNameSuffix-output.txt。文件 TEST-testClassName-reportNameSuffix.xml 已更改属性 'testsuite'--'name' 和 'testcase'--'classname' - reportNameSuffix 添加到属性值。
  • 类型:java.lang.String
  • 要求:否
  • 用户属性:surefire.reportNameSuffix

<报告目录>

写入所有报告的基本目录。
  • 类型:java.io.File
  • 要求:否
  • 默认值:${project.build.directory}/surefire-reports

<重新运行失败测试计数>

(自 3.0.0-M4 以来的 JUnit 4+ 提供者和 JUnit 5+ 提供者)每个失败的测试将重新运行的次数。如果设置大于 0,则在失败后立即重新运行失败的测试。如果失败的测试在任何这些重新运行中通过,它将被标记为通过并报告为“薄片”。但是,将记录所有失败的尝试。
  • 类型:整数
  • 要求:否
  • 用户属性:surefire.rerunFailingTestsCount
  • 默认值:0

<reuseForks>

指示是否可以重复使用分叉的 VM。如果设置为“false”,则为每个要执行的测试类派生一个新的 VM。如果设置为“true”,最多 forkCount 个虚拟机将被分叉,然后重新用于执行所有测试。
  • 类型:布尔值
  • : 2.13
  • 要求:否
  • 用户属性:reuseForks
  • 默认值:真

<运行顺序>

定义运行测试的顺序。支持的值有字母、反向字母、随机、每小时(偶数小时的字母顺序、奇数小时的反向字母顺序)、失败优先、平衡和文件系统。

每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。

Failed first 将首先运行先前运行失败的测试,以及本次运行的新测试。

Balanced 仅与 parallel=classes 相关,并将尝试优化测试的运行顺序,从而减少整体执行时间。最初会创建一个统计文件,并且每次下一次测试运行都会重新排序类。

请注意,统计信息存储在名为 .surefire-XXXXXXXXX的文件中pom.xml并且不应检查到版本控制中。“XXXXX”是整个surefire配置的SHA1校验和,因此不同的配置会有不同的统计文件,这意味着如果您更改任何配置设置,您将重新运行一次,然后才能建立新的统计数据。
  • 类型:java.lang.String
  • : 2.7
  • 要求:否
  • 用户属性:surefire.runOrder
  • 默认:文件系统

<关机>

通过发送SIGTERM 信号 (CTRL+C)关闭插件进程后,每个分叉的 JVM 都会收到SHUTDOWN 命令。
该值默认设置为 (shutdown=exit)(在 3.0.0-M4 版本中更改)。
该参数可以配置其他两个值 testset 和 kill。
使用(shutdown=testset) 测试集可能仍会继续在分叉的 JVM 中运行。
在插件进程收到 SIGTERM 信号后,使用 exit forked JVM 执行 System.exit(1) 。
使用 kill JVM 会执行 Runtime.halt(1) 并杀死自己。
  • 类型:java.lang.String
  • : 2.19
  • 要求:否
  • 用户属性:surefire.shutdown
  • 默认:退出

<跳过>

将此设置为“true”以完全绕过单元测试。不推荐使用它,特别是如果您使用“maven.test.skip”属性启用它,因为 maven.test.skip 会禁用运行测试和编译测试。请考虑改用 skipTests 参数。
  • 类型:布尔值
  • 要求:否
  • 用户属性:maven.test.skip
  • 默认值:假

<skipAfterFailureCount>

设置为错误/失败计数以跳过剩余的测试。由于并行/分叉执行中的竞争条件,这可能无法完全保证。
使用系统属性 -Dsurefire.skipAfterFailureCount=1 或任何大于零的数字启用。默认为“0”。
请参阅文档中的先决条件和限制:
http ://maven.apache.org/plugins/maven-surefire-plugin/examples/skip-after-failure.html
  • 类型:整数
  • : 2.19
  • 要求:否
  • 用户属性:surefire.skipAfterFailureCount
  • 默认值:0

<跳过执行>

已弃用。请改用skipTests。
这个旧参数就像skipTests,但绑定到旧属性“maven.test.skip.exec”。
  • 类型:布尔值
  • : 2.3
  • 要求:否
  • 用户属性:maven.test.skip.exec

<跳过测试>

将此设置为“true”以跳过正在运行的测试,但仍编译它们。不推荐使用它,但有时很方便。
Failsafe 插件弃用了参数 skipTests,该参数将在Failsafe 3.0.0中删除,因为它是 Failsafe 和 Surefire 插件之间冲突的来源。
  • 类型:布尔值
  • : 2.4
  • 要求:否
  • 用户属性:skipTests
  • 默认值:假

<statelessTestsetInfoReporter>

(没有说明)
  • 类型:org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter
  • 要求:否

<statelessTestsetReporter>

注意:使用遗留系统属性disableXmlReport设置为 true 来禁用报告。
  • 类型:org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter
  • 要求:否

<suiteXmlFiles>

(TestNG) 指定 TestNG 套件 xml 文件位置的 <suiteXmlFile> 元素列表。请注意,suiteXmlFiles 与此插件的其他几个参数不兼容,例如包含和排除。
如果指定了 test 参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
  • 类型:java.io.File[]
  • : 2.2
  • 要求:否
  • 用户属性:surefire.suiteXmlFiles

<系统属性>

已弃用。请改用 systemPropertyVariables。
要传递给 JUnit 测试的系统属性列表。
  • 类型:java.util.Properties
  • 要求:否

<系统属性文件>

(没有说明)
  • 类型:java.io.File
  • 要求:否
  • 用户属性:surefire.systemPropertiesFile

<系统属性变量>

要传递给 JUnit 测试的系统属性列表。
  • 类型:java.util.Map
  • : 2.5
  • 要求:否

<临时目录>

包含内部 Surefire 临时文件的temporary-surefire-boot目录的相对路径。在大多数平台上,temporary-surefire-boot 目录是 project.build.directory 或
Windows系统属性 java.io.tmpdir 指定的系统默认临时目录(参见SUREFIRE-1400)。
测试集完成后将其删除。
  • 类型:java.lang.String
  • : 2.20
  • 要求:否
  • 用户属性:tempDir
  • 默认值:万无一失

<测试>

指定此参数以按文件名运行单个测试,覆盖参数包括和排除。您在此处指定的每个模式都将用于创建格式为 **/${test}.java 的包含模式,因此您只需键入 -Dtest=MyTest 即可运行名为“foo/MyTest.java”的单个测试。以!为前缀的测试模式 将被排除在外。
此参数覆盖参数包括、排除和 TestNG 参数 suiteXmlFiles。从 2.7.3 开始,您可以通过添加#myMethod#my*
ethod 在测试中执行有限数量的方法。例如,-Dtest=MyTest#myMethod。junit 4.x 和 TestNg 支持此功能。 从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:


"-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, *Test#test*One+testTwo?????, #fast*+slowTest"
或者例如

"-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]"

参数化 JUnit 运行器使用括号中的索引来描述测试方法,因此非正则表达式方法模式将变为:#testMethod[*]。如果使用@Parameters(name="{index}: fib({0})={1}") 并在模式中选择索引例如5,则非正则表达式方法模式将变为#testMethod[5:*]。
  • 类型:java.lang.String
  • 要求:否
  • 用户属性:测试

<测试类目录>

包含正在测试的项目的生成测试类的目录。这将包含在测试类路径的开头。*
  • 类型:java.io.File
  • 要求:否
  • 默认值:${project.build.testOutputDirectory}

<testFailureIgnore>

将此设置为“true”以在测试期间忽略失败。不推荐使用它,但有时很方便。
  • 类型:布尔值
  • 要求:否
  • 用户属性:maven.test.failure.ignore
  • 默认值:假

<testNGArtifactName>

允许您指定 TestNG 工件的名称。如果未设置,将使用 org.testng:testng。
  • 类型:java.lang.String
  • :2.3.1
  • 要求:否
  • 用户属性:testNGArtifactName
  • 默认值:org.testng:testng

<测试源目录>

包含测试类源的测试源目录。
  • 类型:java.io.File
  • : 2.2
  • 要求:是
  • 默认值:${project.build.testSourceDirectory}

<线程数>

(TestNG/JUnit 4.7 提供者)属性thread-count 允许您指定应为此执行分配多少线程。仅与并行参数一起使用才有意义。
  • 类型:整数
  • : 2.2
  • 要求:否
  • 用户属性:threadCount

<threadCountClasses>

(JUnit 4.7 提供者)此属性允许您在测试类中指定并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发类的数量
  • 如果 useUnlimitedThreads 设置为true ,则限制类并发
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。比如parallel=all,threadCountSuites:threadCountClasses:threadCountMethods的比例是2: 3 :5,并发类中有30%的threadCount。
  • 与前一种情况一样,但没有此叶线程数。示例:parallel=suitesAndClasses,threadCount=16,threadCountSuites=5,threadCountClasses 是未指定的叶子,并发类的数量从 >= 11 变化到 14 或 15。threadCountSuites 成为给定的线程数。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
  • 类型:整数
  • : 2.16
  • 要求:否
  • 用户属性:threadCountClasses
  • 默认值:0

<线程计数方法>

(JUnit 4.7 提供者)此属性允许您在测试方法中指定并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发方法数
  • 如果 useUnlimitedThreads 设置为 true ,则方法的并发性受限
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。例如 parallel=all 和 threadCountSuites:threadCountClasses:threadCountMethods 之间的比率是 2:3: 5,有 50% 的 threadCount 出现在并发方法中。
  • 与前一种情况一样,但没有此叶线程数。示例:parallel=all, threadCount=16, threadCountSuites=2, threadCountClasses=3,但是 threadCountMethods 是未指定的叶子,并发方法的数量从 >= 11 变化到 14 或 15。threadCountSuites 和 threadCountClasses 成为给定的线程数。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
  • 类型:整数
  • : 2.16
  • 要求:否
  • 用户属性:threadCountMethods
  • 默认值:0

<threadCountSuites>

(JUnit 4.7 提供者)此属性允许您指定测试套件中的并发性,即:
  • 如果 threadCount 为 0 或未指定,则并发套件的数量
  • 如果 useUnlimitedThreads 设置为true ,则限制套件的并发性
  • 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。比如parallel=all,threadCountSuites:threadCountClasses:threadCountMethods的比例是2 :3:5,有20%的threadCount出现在并发套件中。
仅与并行参数一起使用才有意义。默认值0的行为与未指定的值相同。
  • 类型:整数
  • : 2.16
  • 要求:否
  • 用户属性:threadCountSuites
  • 默认值:0

<trimStackTrace>

是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
  • 类型:布尔值
  • : 2.2
  • 要求:否
  • 用户属性:trimStackTrace
  • 默认值:真

<使用文件>

生成文件测试报告或仅将测试报告输出到控制台的选项。
  • 类型:布尔值
  • 要求:否
  • 用户属性:surefire.useFile
  • 默认值:真

<useManifestOnlyJar>

默认情况下,Surefire 使用仅清单 JAR 分叉您的测试;将此参数设置为“false”以强制它使用普通的旧 Java 类路径启动您的测试。(请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html 以获取有关仅清单 JAR 及其好处的更详细说明。)
请注意,将此设置为“false” " 如果你的类路径太长,可能会导致你的测试在 Windows 上失败。
  • 类型:布尔值
  • :2.4.3
  • 要求:否
  • 用户属性:surefire.useManifestOnlyJar
  • 默认值:真

<useModulePath>

即使 在项目中使用了module-info.java ,也会禁用模块化路径(自 Java 9 起也称为 Jigsaw 项目) 。
默认启用。如果启用,module-info.java存在并使用 JDK 9+ 执行,使用模块化路径。
  • 类型:布尔值
  • :3.0.0-M2
  • 要求:否
  • 用户属性:surefire.useModulePath
  • 默认值:真

<使用系统类加载器>

将依赖项传递给系统的类加载器的选项,而不是在分叉时使用隔离的类加载器。防止使用系统的 ClassLoader 实现服务提供者查找机制的 JDK 出现问题。
  • 类型:布尔值
  • : 2.3
  • 要求:否
  • 用户属性:surefire.useSystemClassLoader
  • 默认值:真

<useUnlimitedThreads>

(JUnit 4.7 提供者)表示线程池将是无限的。并行参数和类/方法的实际数量将决定。将此设置为“true”会有效地禁用 perCoreThreadCount 和 threadCount。默认为“假”。
  • 类型:布尔值
  • : 2.5
  • 要求:否
  • 用户属性:useUnlimitedThreads
  • 默认值:假

<工作目录>

命令行工作目录。
  • 类型:java.io.File
  • :2.1.3
  • 要求:否
  • 用户属性:basedir