故障安全:集成测试

全名

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”会有效地禁用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
  • 要求

类路径依赖范围排除

要从测试类路径中排除的依赖范围。范围应该是 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”会有效地禁用perCoreThreadCountthreadCount。默认为“假”。
  • 类型布尔值
  • : 2.5
  • 要求
  • 表达式${useUnlimitedThreads}
  • 默认值

工作目录

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