故障安全:集成测试

全名:

org.apache.maven.plugins:maven-failsafe-plugin:2.9:integration-test

说明:

使用 Surefire 运行集成测试。

属性:

  • 需要执行一个 Maven 项目。
  • 需要对范围内的工件进行依赖解析:test。
  • 目标是线程安全的并支持并行构建。
  • 默认绑定到生命周期阶段:integration-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 要从测试类路径中排除的依赖范围。范围应该是 org.apache.maven.artifact.Artifact 定义的范围之一。这包括以下内容:

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

debugForkedProcess 细绳 2.4 将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他通过 argLine参数指定的选项)。
disableXmlReport 布尔值 2.2 标志以禁用生成 xml 格式的报告文件。
默认值为:false。
启用断言 布尔值 2.3.1 默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为“false”。
默认值为:true。
编码 细绳 - 要应用的字符编码方案。
默认值为:${project.reporting.outputEncoding}。
环境变量 地图 2.1.3 要在命令行上设置的其他环境变量。
排除组 细绳 2.2 (仅限 TestNG)排除的组。具有此列表中指定的组之一的任何方法/类/等都不会运行。
如果指定了suiteXmlFiles 参数,则忽略此参数。
排除 列表 - <exclude> 元素列表,指定应在测试中排除的测试(按模式)。如果未指定且未指定test参数,则默认排除将是
<excludes>
 <exclude>**/*$*</exclude>
</excludes>
(排除所有内部类)。
如果指定了 TestNG suiteXmlFiles 参数,则忽略此参数。

每个排除项目还可能包含一个以逗号分隔的项目子列表,这些项目将被视为多个 <exclude> 条目。

失败如果没有测试 布尔值 2.4 如果没有要运行的测试,请将其设置为“true”以导致失败。默认为“假”。
分叉模式 细绳 2.1 指定分叉模式的选项。可以是“从不”、“一次”或“总是”。“none”和“pertest”也被接受以实现向后兼容性。每个测试类的“总是”分叉。
默认值为:一次。
forkedProcessTimeoutInSeconds 整数 2.4 在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
团体 细绳 2.2 (仅限 TestNG)此测试的组。如果指定,只有用此处指定的组之一装饰的类/方法/等才会包含在测试运行中。
如果指定了suiteXmlFiles 参数,则忽略此参数。
包括 列表 - <include> 元素列表,指定应包含在测试中的测试(按模式)。未指定且未指定测试参数时,默认包含将是
<includes>
 <include>**/IT*.java</include>
 <include>**/*IT.java</include>
 <include >**/*ITCase.java</include>
</includes>

每个包含项还可能包含一个以逗号分隔的项子列表,这些子项将被视为多个 <include> 条目。

如果指定了 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}/failsafe-reports。
运行订单 细绳 2.7 定义运行测试的顺序。支持的值是“alphabetical”、“reversealphabetical”、“random”、“hourly”(偶数小时的字母顺序,奇数小时的反向字母顺序)和“文件系统”。

每小时的奇数/偶数是在扫描类路径时确定的,这意味着它可能会在多模块构建期间发生变化。
默认值为:文件系统。
跳过 布尔值 - 将此设置为“true”以完全绕过单元测试。不推荐使用它,特别是如果您使用“maven.test.skip”属性启用它,因为 maven.test.skip 会禁用运行测试和编译测试。请考虑改用 skipTests 参数。
默认值为:false。
跳过执行 布尔值 2.3 已弃用。请改用skipTests。
跳过IT 布尔值 2.4.3-alpha-2 将此设置为“true”以跳过正在运行的集成测试,但仍会编译它们。不推荐使用它,但有时很方便。
跳过测试 布尔值 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的包含模式,因此您只需键入“-Dit.test=MyTest”即可运行名为“foo/MyTest.java”的单个测试”。
此参数覆盖包含/排除 参数和 TestNG suiteXmlFiles参数。

从 2.7.3 开始,您可以通过添加#myMethod 或#my*ethod 在测试中执行有限数量的方法。junit 4.x 和 testNg 支持Si 类型“-Dtest=MyTest#myMethod”
测试类目录 文件 - 包含正在测试的项目的生成测试类的目录。这将包含在测试类路径的开头。
默认值为:${project.build.testOutputDirectory}。
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”会有效地禁用perCoreThreadCount和 threadCount。默认为“假”。
默认值为: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
  • 要求:否

类路径依赖范围排除:

要从测试类路径中排除的依赖范围。范围应该是 org.apache.maven.artifact.Artifact 定义的范围之一。这包括以下内容:

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

debugForkedProcess:

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

disableXmlReport:

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

启用断言:

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

编码:

要应用的字符编码方案。
  • 类型:java.lang.String
  • 要求:否
  • 表达式:${编码}
  • 默认值:${project.reporting.outputEncoding}

环境变量:

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

排除组:

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

不包括:

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

每个排除项目还可能包含一个以逗号分隔的项目子列表,这些项目将被视为多个 <exclude> 条目。
  • 类型:java.util.List
  • 要求:否

失败如果没有测试:

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

叉子模式:

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

forkedProcessTimeoutInSeconds:

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

团体:

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

包括:

<include> 元素列表,指定应包含在测试中的测试(按模式)。未指定且未指定测试参数时,默认包含将是
<includes>
 <include>**/IT*.java</include>
 <include>**/*IT.java</include>
 <include >**/*ITCase.java</include>
</includes>

每个包含项还可能包含一个以逗号分隔的项子列表,这些子项将被视为多个 <include> 条目。

如果指定了 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}
  • 默认值:真

打印总结:

打印测试套件摘要或仅打印有错误的测试用例的选项。
  • 类型:布尔值
  • 要求:否
  • 表达式:${failsafe.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
  • 要求:否
  • 表达式:${failsafe.reportFormat}
  • 默认值:简短

报告目录:

写入所有报告的基本目录。
  • 类型:java.io.File
  • 要求:否
  • 默认值:${project.build.directory}/failsafe-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.3-alpha-2
  • 要求:否
  • 表达式:${skipITs}

跳过测试:

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

套件Xml文件:

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

摘要文件:

要将集成测试结果写入的摘要文件。
  • 类型:java.io.File
  • 要求:是
  • 表达式:${project.build.directory}/failsafe-reports/failsafe-summary.xml

系统属性:

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

系统属性文件:

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

系统属性变量:

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

测试:

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

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

测试类目录:

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

测试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}
  • 默认值:真

使用文件:

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

useManifestOnlyJar:

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

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

使用系统类加载器:

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

使用无限线程:

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

工作目录:

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