万无一失:测试
全名:
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 定义的范围之一。这包括以下内容:
|
<consoleOutputReporter> | SurefireConsoleOutputReporter | - | (没有说明) |
<debugForkedProcess> | 细绳 | 2.4 | 将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他通过 argLine 参数指定的选项)。 用户属性是:maven.surefire.debug。 |
<dependenciesToScan> | 细绳[] | 2.15 | 要扫描测试类以包含在测试运行中的依赖项列表。此元素的子元素必须是 <dependency> 元素,并且每个元素的内容必须是遵循一般形式的字符串:
groupId[:artifactId[:type[:classifier][:version]]] 通配符 * 可以在这些复合标识符的子部分中使用,以进行类似 glob 的模式匹配。在没有分类器的情况下匹配依赖项时,可以省略分类器。 例子:
从 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> 从 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 提供者)此属性允许您在测试类中指定并发性,即:
默认值为:0 。 用户属性为:threadCountClasses。 |
<线程计数方法> | 整数 | 2.16 | (JUnit 4.7 提供者)此属性允许您在测试方法中指定并发性,即:
默认值为:0 。 用户属性为:threadCountMethods。 |
<threadCountSuites> | 整数 | 2.16 | (JUnit 4.7 提供者)此属性允许您指定测试套件中的并发性,即:
默认值为: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
由于 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 提供程序解析器之间的冲突引起的一些问题。
将其设置为 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
当您终止 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
环境是从键到值的系统相关映射,从 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 注释一起仍然有意义。
对于 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> 元素列表,指定应在测试中排除的测试(按模式)。当未指定和未指定测试参数时,默认排除将是
(不包括所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
每个排除项目还可能包含一个以逗号分隔的项目子列表,这些项目将被视为多个 <exclude> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:
请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
<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 执行的最大数量,即
示例值:“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 的生命周期。
指定分叉模式的选项。可以永远,一次,永远,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
有关更多详细信息,请参阅文档:
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 注释一起仍然有意义。
对于 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> 元素列表,指定应包含在测试中的测试(按模式)。当未指定和未指定测试参数时,默认包含将是
每个包含项还可能包含一个以逗号分隔的项子列表,这些子项将被视为多个 <include> 条目。
从 2.19 开始,一个参数(JUnit 4、JUnit 4.7+、TestNG)支持复杂的语法:
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
请注意,这些值是相对于包含正在测试项目的生成测试类的目录的。此目录由参数 testClassesDirectory 声明,该参数默认为 POM 属性 ${project.build.testOutputDirectory},通常为 src/test/java,除非被覆盖。
<includes> <include>**/Test*.java</include> <include>**/*Test.java</include> <include>**/*Tests.java</include> <include>**/*TestCase.java</include> </includes>
从 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 配置文件中禁用并行执行时)。
(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,则永远等待,永不超时。与“无”不同的指定并行有意义。
示例值:“3.5”、“4”
如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
- 类型:双
- 从: 2.16
- 要求:否
- 用户属性:surefire.parallel.forcedTimeout
<parallelTestsTimeoutInSeconds>
在一定秒数后停止执行排队的并行 JUnit 测试。
示例值:“3.5”、“4”
如果设置为 0,则永远等待,永不超时。与“无”不同的指定并行有意义。
示例值:“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校验和,因此不同的配置会有不同的统计文件,这意味着如果您更改任何配置设置,您将重新运行一次,然后才能建立新的统计数据。
每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。
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) 并杀死自己。
该值默认设置为 (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
使用系统属性 -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 插件之间冲突的来源。
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 参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
如果指定了 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)。
测试集完成后将其删除。
在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)支持复杂的语法:
或者例如
参数化 JUnit 运行器使用括号中的索引来描述测试方法,因此非正则表达式方法模式将变为:#testMethod[*]。如果使用@Parameters(name="{index}: fib({0})={1}") 并在模式中选择索引例如5,则非正则表达式方法模式将变为#testMethod[5:*]。
此参数覆盖参数包括、排除和 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 成为给定的线程数。
- 类型:整数
- 从: 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 成为给定的线程数。
- 类型:整数
- 从: 2.16
- 要求:否
- 用户属性:threadCountMethods
- 默认值:0
<threadCountSuites>
(JUnit 4.7 提供者)此属性允许您指定测试套件中的并发性,即:
- 如果 threadCount 为 0 或未指定,则并发套件的数量
- 如果 useUnlimitedThreads 设置为true ,则限制套件的并发性
- 如果 threadCount 和某些线程计数参数对于并行而言 > 0,则根据比率计算并发。比如parallel=all,threadCountSuites:threadCountClasses:threadCountMethods的比例是2 :3:5,有20%的threadCount出现在并发套件中。
- 类型:整数
- 从: 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 上失败。
请注意,将此设置为“false” " 如果你的类路径太长,可能会导致你的测试在 Windows 上失败。
- 类型:布尔值
- 自:2.4.3
- 要求:否
- 用户属性:surefire.useManifestOnlyJar
- 默认值:真
<useModulePath>
即使
在项目中使用了module-info.java ,也会禁用模块化路径(自 Java 9 起也称为 Jigsaw 项目) 。
默认启用。如果启用,module-info.java存在并使用 JDK 9+ 执行,使用模块化路径。
默认启用。如果启用,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