万无一失:测试

全名

org.apache.maven.plugins:maven-surefire-plugin:2.9:test

说明

使用 Surefire 运行测试。

属性

  • 需要执行一个 Maven 项目。
  • 需要对范围内的工件进行依赖解析:test
  • 目标是线程安全的并支持并行构建。
  • 默认绑定到生命周期阶段:test

必需参数

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

可选参数

姓名 类型 自从 描述
附加类路径元素 列表 2.4 要附加到类路径的其他元素。
参数线 细绳 2.1 在命令行上设置的任意 JVM 选项。
基于的 文件 - 正在测试的项目的基本目录。这可以通过 System.getProperty("basedir") 在您的单元测试中获得。
默认值为${basedir}
子委托 布尔值 2.1 当为 false 时,它​​使测试使用标准的类加载器委托而不是默认的 Maven 隔离类加载器运行。仅在分叉时使用(forkMode 不是“none”)。
将其设置为 false 有助于解决类路径中的 xml 解析器与 Java 5 提供程序解析器之间的冲突引起的一些问题。
默认值为false
类目录 文件 - 包含正在测试的项目的生成类的目录。这将包含在测试类路径中的测试类之后。
默认值为${project.build.outputDirectory}
类路径DependencyExcludes 列表 2.6 要从测试类路径中排除的依赖项列表。每个依赖项字符串必须遵循groupId:artifactId格式。例如:org.acme:project-a
类路径DependencyScopeExclude 细绳 2.6 要从测试类路径中排除的依赖范围。范围可以是以下范围之一:

  • compile - 系统,提供,编译
  • 运行时- 编译,运行时
  • 测试- 系统、提供、编译、运行时、测试

debugForkedProcess 细绳 2.4 将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他通过 argLine参数指定的选项)。
disableXmlReport 布尔值 2.2 标志以禁用生成 xml 格式的报告文件。
默认值为false
启用断言 布尔值 2.3.1 默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为“false”。
默认值为true
环境变量 地图 2.1.3 要在命令行上设置的其他环境变量。
排除组 细绳 2.2 (仅限 TestNG)排除的组。具有此列表中指定的组之一的任何方法/类/等都不会运行。
如果指定了suiteXmlFiles 参数,则忽略此参数。
排除 列表 - <exclude> 元素列表,指定应在测试中排除的测试(按模式)。如果未指定且未指定test参数,则默认排除将是
<excludes>
 <exclude>**/*$*</exclude>
</excludes>
(排除所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
失败如果没有测试 布尔值 2.4 如果没有要运行的测试,请将其设置为“true”以导致失败。默认为“假”。
分叉模式 细绳 2.1 指定分叉模式的选项。可以是“从不”、“一次”或“总是”。“none”和“pertest”也被接受以实现向后兼容性。每个测试类的“总是”分叉。
默认值为一次
forkedProcessTimeoutInSeconds 整数 2.4 在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
团体 细绳 2.2 (仅限 TestNG)此测试的组。如果指定,只有用此处指定的组之一装饰的类/方法/等才会包含在测试运行中。
如果指定了suiteXmlFiles 参数,则忽略此参数。
包括 列表 - <include> 元素列表,指定应包含在测试中的测试(按模式)。未指定且未指定测试参数时,默认包含将是
<includes>
 <include>**/Test*.java</include>
 <include>**/*Test.java</include>
 <include >**/*TestCase.java</include>
</includes>
如果指定了 TestNG suiteXmlFiles参数,则忽略此参数。
junitArtifactName 细绳 2.3.1 允许您指定 JUnit 工件的名称。如果未设置, 将使用junit:junit 。
默认值为junit:junit
虚拟机 细绳 2.1 用于指定要与分叉选项一起使用的 jvm(或 java 可执行文件的路径)的选项。默认情况下,jvm 将是与用于运行 Maven 的虚拟机相同的虚拟机的新实例。JVM 设置不是从 MAVEN_OPTS 继承的。
对象工厂 细绳 2.5 (仅限TestNG)定义用于创建所有测试实例的工厂类。
平行线 细绳 2.2 (仅限TestNG)当您使用parallel属性时,TestNG 将尝试在单独的线程中运行您的所有测试方法,但相互依赖的方法除外,它们将在同一线程中运行以尊重它们的执行顺序。

(JUnit 4.7 提供程序)支持值“类”/“方法”/“两者”在单独的线程中运行,由threadCount控制。
perCoreThreadCount 布尔值 2.5 (JUnit 4.7 提供程序)指示 threadCount 是每个 cpu 核心。
默认值为true
打印总结 布尔值 - 打印测试套件摘要或仅打印有错误的测试用例的选项。
默认值为true
特性 特性 2.4 用于配置所有 TestNG 相关配置的属性列表。这是配置 TestNG 的新的首选方法。
重定向测试输出到文件 布尔值 2.3 将此设置为“true”以将单元测试标准输出重定向到文件(在 reportsDirectory/testName-output.txt 中找到)。
默认值为false
远程存储库 列表 2.2 在 POM 中声明的远程插件存储库。
报告格式 细绳 - 选择要生成的测试报告的格式。可以设置为“简要”或“简单”。
默认值为简要
报告目录 文件 - 写入所有报告的基本目录。
默认值为${project.build.directory}/surefire-reports
运行订单 细绳 2.7 定义运行测试的顺序。支持的值是“alphabetical”、“reversealphabetical”、“random”、“hourly”(偶数小时的字母顺序,奇数小时的反向字母顺序)和“文件系统”。

每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。
默认值为文件系统
跳过 布尔值 - 将此设置为“true”以完全绕过单元测试。不推荐使用它,特别是如果您使用“maven.test.skip”属性启用它,因为 maven.test.skip 会禁用运行测试和编译测试。请考虑改用 skipTests参数。
默认值为false
跳过执行 布尔值 2.3 已弃用。请改用skipTests。
跳过测试 布尔值 2.4 将此设置为“true”以跳过正在运行的测试,但仍编译它们。不推荐使用它,但有时很方便。
默认值为false
套件Xml文件 文件[] 2.2 (仅限 TestNG)指定 TestNG 套件 xml 文件位置的 <suiteXmlFile> 元素列表。请注意, suiteXmlFiles与此插件的其他几个参数不兼容,例如 include/excludes
如果指定了test参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
系统属性 特性 - 已弃用。请改用 systemPropertyVariables。
系统属性文件 文件 2.8.2 系统属性列表,从文件加载,传递给 JUnit 测试。
系统属性变量 地图 2.5 要传递给 JUnit 测试的系统属性列表。
测试 细绳 - 指定此参数以按文件名运行单个测试,覆盖包含/排除参数。您在此处指定的每个模式都将用于创建格式为**/${test}.java的包含模式,因此您只需键入“-Dtest=MyTest”即可运行名为“foo/MyTest.java”的单个测试。
此参数覆盖包含/排除 参数和 TestNG suiteXmlFiles参数。

从 2.7.3 开始,您可以通过添加#myMethod 或#my*ethod 在测试中执行有限数量的方法。junit 4.x 和 testNg 支持Si 类型“-Dtest=MyTest#myMethod”
测试类目录 文件 - 包含正在测试的项目的生成测试类的目录。这将包含在测试类路径的开头。*
默认值为${project.build.testOutputDirectory}
测试失败忽略 布尔值 - 将此设置为“true”以在测试期间忽略失败。不推荐使用它,但有时很方便。
默认值为false
testNGArtifactName 细绳 2.3.1 允许您指定 TestNG 工件的名称。如果未设置, 将使用org.testng:testng 。
默认值为org.testng:testng
线程数 整数 2.2 (仅适用于 TestNG/JUnit 4.7 提供程序)属性 thread-count 允许您指定应为此执行分配多少线程。仅与并行参数一起使用才有意义 。
trimStackTrace 布尔值 2.2 是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
默认值为true
使用文件 布尔值 - 生成文件测试报告或仅将测试报告输出到控制台的选项。
默认值为true
使用ManifestOnlyJar 布尔值 2.4.3 默认情况下,Surefire 使用仅清单 JAR 分叉您的测试;将此参数设置为“false”以强制它使用普通的旧 Java 类路径启动您的测试。(有关仅清单 JAR 及其好处的更详细说明,请参阅 http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html。)

请注意,如果您的类路径太长,将其设置为“false”可能会导致您的测试在 Windows 上失败。
默认值为true
使用SystemClassLoader 布尔值 2.3 将依赖项传递给系统的类加载器的选项,而不是在分叉时使用隔离的类加载器。防止使用系统的类加载器实现服务提供者查找机制的 JDK 出现问题。
默认值为true
使用无限线程 布尔值 2.5 (JUnit 4.7 提供者)表示线程池将是无限的。并行参数和类/方法的实际数量将决定。将此设置为“true”会有效地禁用perCoreThreadCountthreadCount。默认为“假”。
默认值为false
工作目录 文件 2.1.3 命令行工作目录。

参数详情

附加类路径元素

要附加到类路径的其他元素。
  • 类型java.util.List
  • : 2.4
  • 要求

参数线

在命令行上设置的任意 JVM 选项。
  • 类型java.lang.String
  • : 2.1
  • 要求
  • 表达式${argLine}

基于

正在测试的项目的基本目录。这可以通过 System.getProperty("basedir") 在您的单元测试中获得。
  • 类型java.io.File
  • 要求
  • 默认值${basedir}

子代

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

类目录

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

类路径依赖排除

要从测试类路径中排除的依赖项列表。每个依赖项字符串必须遵循groupId:artifactId格式。例如:org.acme:project-a
  • 类型java.util.List
  • : 2.6
  • 要求

类路径依赖范围排除

要从测试类路径中排除的依赖范围。范围可以是以下范围之一:

  • compile - 系统,提供,编译
  • 运行时- 编译,运行时
  • 测试- 系统、提供、编译、运行时、测试
  • 类型java.lang.String
  • : 2.6
  • 要求

debugForkedProcess

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

disableXmlReport

标志以禁用生成 xml 格式的报告文件。
  • 类型布尔值
  • : 2.2
  • 要求
  • 表达式${disableXmlReport}
  • 默认值

启用断言

默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为“false”。
  • 类型布尔值
  • 2.3.1
  • 要求
  • 表达式${enableAssertions}
  • 默认值

环境变量

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

排除组

(仅限 TestNG)排除的组。具有此列表中指定的组之一的任何方法/类/等都不会运行。
如果指定了suiteXmlFiles 参数,则忽略此参数。
  • 类型java.lang.String
  • : 2.2
  • 要求
  • 表达式${excludedGroups}

不包括

<exclude> 元素列表,指定应在测试中排除的测试(按模式)。如果未指定且未指定test参数,则默认排除将是
<excludes>
 <exclude>**/*$*</exclude>
</excludes>
(排除所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。
  • 类型java.util.List
  • 要求

失败如果没有测试

如果没有要运行的测试,请将其设置为“true”以导致失败。默认为“假”。
  • 类型java.lang.Boolean
  • : 2.4
  • 要求
  • 表达式${failIfNoTests}

叉子模式

指定分叉模式的选项。可以是“从不”、“一次”或“总是”。“none”和“pertest”也被接受以实现向后兼容性。每个测试类的“总是”分叉。
  • 类型java.lang.String
  • : 2.1
  • 要求
  • 表达式${forkMode}
  • 默认值一次

forkedProcessTimeoutInSeconds

在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
  • 类型整数
  • : 2.4
  • 要求
  • 表达式${surefire.timeout}

团体

(仅限 TestNG)此测试的组。如果指定,只有用此处指定的组之一装饰的类/方法/等才会包含在测试运行中。
如果指定了suiteXmlFiles 参数,则忽略此参数。
  • 类型java.lang.String
  • : 2.2
  • 要求
  • 表达式${groups}

包括

<include> 元素列表,指定应包含在测试中的测试(按模式)。未指定且未指定测试参数时,默认包含将是
<includes>
 <include>**/Test*.java</include>
 <include>**/*Test.java</include>
 <include >**/*TestCase.java</include>
</includes>
如果指定了 TestNG suiteXmlFiles参数,则忽略此参数。
  • 类型java.util.List
  • 要求

junitArtifactName

允许您指定 JUnit 工件的名称。如果未设置, 将使用junit:junit 。
  • 类型java.lang.String
  • 2.3.1
  • 要求
  • 表达式${junitArtifactName}
  • 默认值junit:junit

虚拟机

用于指定要与分叉选项一起使用的 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控制。
  • 类型java.lang.String
  • : 2.2
  • 要求
  • 表达式${parallel}

perCoreThreadCount

(JUnit 4.7 提供程序)指示 threadCount 是每个 cpu 核心。
  • 类型布尔值
  • : 2.5
  • 要求
  • 表达式${perCoreThreadCount}
  • 默认值

打印总结

打印测试套件摘要或仅打印有错误的测试用例的选项。
  • 类型布尔值
  • 要求
  • 表达式${surefire.printSummary}
  • 默认值

属性

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

重定向测试输出到文件

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

远程存储库

在 POM 中声明的远程插件存储库。
  • 类型java.util.List
  • : 2.2
  • 要求
  • 表达式${project.pluginArtifactRepositories}

报告格式

选择要生成的测试报告的格式。可以设置为“简要”或“简单”。
  • 类型java.lang.String
  • 要求
  • 表达式${surefire.reportFormat}
  • 默认值简短

报告目录

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

运行顺序

定义运行测试的顺序。支持的值是“alphabetical”、“reversealphabetical”、“random”、“hourly”(偶数小时的字母顺序,奇数小时的反向字母顺序)和“文件系统”。

每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。
  • 类型java.lang.String
  • : 2.7
  • 要求
  • 默认文件系统

跳过

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

跳过执行

已弃用。请改用skipTests。
这个旧参数就像skipTests一样,但绑定到旧属性“maven.test.skip.exec”。
  • 类型布尔值
  • : 2.3
  • 要求
  • 表达式${maven.test.skip.exec}

跳过测试

将此设置为“true”以跳过正在运行的测试,但仍编译它们。不推荐使用它,但有时很方便。
  • 类型布尔值
  • : 2.4
  • 要求
  • 表达式${skipTests}
  • 默认值

套件Xml文件

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

系统属性

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

系统属性文件

系统属性列表,从文件加载,传递给 JUnit 测试。
  • 类型java.io.File
  • 2.8.2
  • 要求

系统属性变量

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

测试

指定此参数以按文件名运行单个测试,覆盖包含/排除参数。您在此处指定的每个模式都将用于创建格式为**/${test}.java的包含模式,因此您只需键入“-Dtest=MyTest”即可运行名为“foo/MyTest.java”的单个测试。
此参数覆盖包含/排除 参数和 TestNG suiteXmlFiles参数。

从 2.7.3 开始,您可以通过添加#myMethod 或#my*ethod 在测试中执行有限数量的方法。junit 4.x 和 testNg 支持Si 类型“-Dtest=MyTest#myMethod”
  • 类型java.lang.String
  • 要求
  • 表达式${test}

测试类目录

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

测试失败忽略

将此设置为“true”以在测试期间忽略失败。不推荐使用它,但有时很方便。
  • 类型布尔值
  • 要求
  • 表达式${maven.test.failure.ignore}
  • 默认值

测试NGArtifactName

允许您指定 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}

修剪堆栈跟踪

是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
  • 类型布尔值
  • : 2.2
  • 要求
  • 表达式${trimStackTrace}
  • 默认值

使用文件

生成文件测试报告或仅将测试报告输出到控制台的选项。
  • 类型布尔值
  • 要求
  • 表达式${surefire.useFile}
  • 默认值

useManifestOnlyJar

默认情况下,Surefire 使用仅清单 JAR 分叉您的测试;将此参数设置为“false”以强制它使用普通的旧 Java 类路径启动您的测试。(有关仅清单 JAR 及其好处的更详细说明,请参阅 http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html。)

请注意,如果您的类路径太长,将其设置为“false”可能会导致您的测试在 Windows 上失败。
  • 类型布尔值
  • 2.4.3
  • 要求
  • 表达式${surefire.useManifestOnlyJar}
  • 默认值

使用系统类加载器

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

使用无限线程

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

工作目录

命令行工作目录。
  • 类型java.io.File
  • 2.1.3
  • 要求
  • 表达式${basedir}