故障安全:集成测试

全名:

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

说明:

使用 Surefire 运行集成测试。

属性:

  • 需要执行 Maven 2.0 项目。
  • 需要范围内工件的依赖关系解析:test.
  • 默认绑定到生命周期阶段:integration-test.

必需参数

姓名 类型 自从 描述
基于的 File - 正在测试的项目的基本目录。这可以通过 System.getProperty("basedir") 在您的单元测试中获得。
类目录 File - 包含正在测试的项目的生成类的目录。这将包含在测试类路径中的测试类之后。
默认值为:${project.build.outputDirectory}。
摘要文件 File - 要将集成测试结果写入的摘要文件。
测试类目录 File - 包含正在测试的项目的生成测试类的目录。这将包含在测试类路径的开头。
默认值为:${project.build.testOutputDirectory}。
测试源目录 File 2.2 包含测试类源的测试源目录。

可选参数

姓名 类型 自从 描述
附加类路径元素 List 2.4 要附加到类路径的其他元素。
参数线 String 2.1 在命令行上设置的任意 JVM 选项。
子委托 boolean 2.1 当为 false 时,它​​使测试使用标准的类加载器委托而不是默认的 Maven 隔离类加载器运行。仅在分叉时使用(forkMode 不是“none”)。
将其设置为 false 有助于解决类路径中的 xml 解析器与 Java 5 提供程序解析器之间的冲突引起的一些问题。
默认值为:false。
debugForkedProcess String 2.4 将调试器附加到分叉的 JVM。如果设置为“true”,进程将暂停并等待调试器连接到端口 5005。如果设置为其他字符串,该字符串将附加到 argLine,允许您配置任意可调试性选项(不覆盖其他argLine 中指定的选项)。
disableXmlReport boolean 2.2 标志以禁用生成 xml 格式的报告文件。
默认值为:false。
启用断言 boolean 2.3.1 默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为 false。
默认值为:true。
编码 String - 要应用的字符编码方案。
默认值为:${project.reporting.outputEncoding}。
环境变量 Map 2.1.3 要在命令行上设置的其他环境。
排除组 String 2.2 (仅限 TestNG)排除的组。具有此列表中指定的组之一的任何方法/类/等都不会运行。如果指定了 suiteXmlFiles,则此参数将被覆盖。
排除 List - 用于指定应在测试中排除的测试的模式列表(以逗号分隔)。如果未指定且未指定 test参数,则默认排除将是**/*$*(排除所有内部类)。如果指定了 TestNG suiteXmlFiles,则忽略此参数。
失败如果没有测试 Boolean 2.4 如果没有要运行的测试,请将其设置为“true”以导致失败。默认为假。
分叉模式 String 2.1 指定分叉模式的选项。可以是“从不”、“一次”或“总是”。“none”和“pertest”也被接受以实现向后兼容性。
默认值为:once。
forkedProcessTimeoutInSeconds int 2.4 在一定秒数后终止分叉的测试进程。如果设置为 0,则永远等待进程,永不超时。
团体 String 2.2 (仅限 TestNG)此测试的组。如果指定,只有用此处指定的组之一装饰的类/方法/等才会包含在测试运行中。如果指定了 suiteXmlFiles,则此参数将被覆盖。
包括 List - 用于指定应包含在测试中的测试的模式列表(以逗号分隔)。如果未指定 test且未指定参数,则默认包含**/IT*.java **/*IT.java **/*ITCase.java. 如果指定了 TestNG suiteXmlFiles,则忽略此参数。
junitArtifactName String 2.3.1 允许您指定 JUnit 工件的名称。如果没有设置, junit:junit将被使用。
默认值为:junit:junit。
虚拟机 String 2.1 用于指定要与分叉选项一起使用的 jvm(或 java 可执行文件的路径)的选项。默认情况下,jvm 将与用于运行 Maven 的 jvm 相同。
对象工厂 String 2.5 (仅限TestNG)定义用于创建所有测试实例的工厂类
平行线 String 2.2 (仅限TestNG)当您使用parallel 属性时,TestNG 将尝试在单独的线程中运行所有测试方法,但相互依赖的方法除外,它们将在同一线程中运行以尊重它们的执行顺序。

在 JUnit 4.7 中,这些值是类/方法/两者都在单独的线程中运行,由 threadCount 控制。
perCoreThreadCount String 2.5 (仅限junitcore)指示threadCount 是每个cpu 核心。默认为真
打印总结 boolean - 打印测试套件摘要或仅打印有错误的测试用例的选项。
默认值为:true。
特性 Properties 2.4 用于配置所有 TestNG 相关配置的属性列表。这是配置 TestNG 的新的首选方法。
重定向测试输出到文件 boolean 2.3 分叉时,将此设置为 true 以将单元测试标准输出重定向到文件(在 reportsDirectory/testName-output.txt 中找到)。
默认值为:false。
远程存储库 List 2.2 在 POM 中声明的插件远程存储库。
报告格式 String - 选择要生成的测试报告的格式。可以设置为简单或简单。
默认值为:brief。
报告目录 File - 写入所有报告的基本目录。
跳过 boolean - 将此设置为“true”以完全绕过单元测试。不推荐使用它,特别是如果您使用“maven.test.skip”属性启用它,因为 maven.test.skip 会禁用运行测试和编译测试。请考虑改用 skipTests 参数。
跳过执行 boolean 2.3 已弃用。请改用 -DskipTests。
跳过IT boolean 2.4.3-alpha-2 将此设置为“true”以跳过正在运行的集成测试,但仍会编译它们。不推荐使用它,但有时很方便。
跳过测试 boolean 2.4 将此设置为“true”以跳过正在运行的测试,但仍编译它们。不推荐使用它,但有时很方便。
套件Xml文件 File[] 2.2 (仅限 TestNG)TestNG 套件 xml 文件位置列表,以逗号分隔。请注意,suiteXmlFiles 与此插件上的其他几个参数不兼容,例如包含/排除。如果指定了“test”参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
系统属性 Properties - 已弃用。请改用 systemPropertyVariables。
系统属性变量 Map 2.5 要传递给 JUnit 测试的系统属性列表。
测试 String - 指定此参数以按文件名运行单个测试,覆盖includes/excludes参数。您在此处指定的每个模式都将用于创建格式如下的包含模式**/${test}.java,因此您只需键入“-Dtest=MyTest”即可运行名为“foo/MyTest.java”的单个测试。此参数将覆盖 TestNG suiteXmlFiles 参数。
testNGArtifactName String 2.3.1 允许您指定 TestNG 工件的名称。如果没有设置, org.testng:testng将被使用。
默认值为:org.testng:testng。
线程数 int 2.2 (仅限TestNG)属性thread-count 允许您指定应为此执行分配多少线程。只有与并行一起使用才有意义。
trimStackTrace boolean 2.2 是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
默认值为:true。
使用文件 boolean - 生成文件测试报告或仅将测试报告输出到控制台的选项。
默认值为:true。
使用ManifestOnlyJar boolean 2.4.3 默认情况下,Surefire 使用仅清单 JAR 分叉您的测试;将此参数设置为“false”以强制它使用普通的旧 Java 类路径启动您的测试。(有关仅清单 JAR 及其好处的更详细说明,请参阅 http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html。)

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

参数详情

附加类路径元素:

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

参数线:

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

基于:

正在测试的项目的基本目录。这可以通过 System.getProperty("basedir") 在您的单元测试中获得。
  • 类型:java.io.File
  • 必需:Yes
  • 表达式:${basedir}

子代:

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

类目录:

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

debugForkedProcess:

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

disableXmlReport:

标志以禁用生成 xml 格式的报告文件。
  • 类型:boolean
  • 自:2.2
  • 必需:No
  • 表达式:${disableXmlReport}
  • 默认:false

启用断言:

默认情况下,Surefire 启用 JVM 断言来执行您的测试用例。要禁用断言,请将此标志设置为 false。
  • 类型:boolean
  • 自:2.3.1
  • 必需:No
  • 表达式:${enableAssertions}
  • 默认:true

编码:

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

环境变量:

要在命令行上设置的其他环境。
  • 类型:java.util.Map
  • 自:2.1.3
  • 必需:No

排除组:

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

不包括:

用于指定应在测试中排除的测试的模式列表(以逗号分隔)。如果未指定且未指定 test参数,则默认排除将是**/*$*(排除所有内部类)。如果指定了 TestNG suiteXmlFiles,则忽略此参数。
  • 类型:java.util.List
  • 必需:No

失败如果没有测试:

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

叉子模式:

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

forkedProcessTimeoutInSeconds:

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

团体:

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

包括:

用于指定应包含在测试中的测试的模式列表(以逗号分隔)。如果未指定 test且未指定参数,则默认包含**/IT*.java **/*IT.java **/*ITCase.java. 如果指定了 TestNG suiteXmlFiles,则忽略此参数。
  • 类型:java.util.List
  • 必需:No

junitArtifactName:

允许您指定 JUnit 工件的名称。如果没有设置, junit:junit将被使用。
  • 类型:java.lang.String
  • 自:2.3.1
  • 必需:No
  • 表达式:${junitArtifactName}
  • 默认:junit:junit

虚拟机:

用于指定要与分叉选项一起使用的 jvm(或 java 可执行文件的路径)的选项。默认情况下,jvm 将与用于运行 Maven 的 jvm 相同。
  • 类型:java.lang.String
  • 自:2.1
  • 必需:No
  • 表达式:${jvm}

对象工厂:

(仅限TestNG)定义用于创建所有测试实例的工厂类
  • 类型:java.lang.String
  • 自:2.5
  • 必需:No
  • 表达式:${objectFactory}

并行:

(仅限TestNG)当您使用parallel 属性时,TestNG 将尝试在单独的线程中运行所有测试方法,但相互依赖的方法除外,它们将在同一线程中运行以尊重它们的执行顺序。

在 JUnit 4.7 中,这些值是类/方法/两者都在单独的线程中运行,由 threadCount 控制。
  • 类型:java.lang.String
  • 自:2.2
  • 必需:No
  • 表达式:${parallel}

perCoreThreadCount:

(仅限junitcore)指示threadCount 是每个cpu 核心。默认为真
  • 类型:java.lang.String
  • 自:2.5
  • 必需:No
  • 表达式:${perCoreThreadCount}

打印总结:

打印测试套件摘要或仅打印有错误的测试用例的选项。
  • 类型:boolean
  • 必需:No
  • 表达式:${failsafe.printSummary}
  • 默认:true

属性:

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

重定向测试输出到文件:

分叉时,将此设置为 true 以将单元测试标准输出重定向到文件(在 reportsDirectory/testName-output.txt 中找到)。
  • 类型:boolean
  • 自:2.3
  • 必需:No
  • 表达式:${maven.test.redirectTestOutputToFile}
  • 默认:false

远程存储库:

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

报告格式:

选择要生成的测试报告的格式。可以设置为简单或简单。
  • 类型:java.lang.String
  • 必需:No
  • 表达式:${failsafe.reportFormat}
  • 默认:brief

报告目录:

写入所有报告的基本目录。
  • 类型:java.io.File
  • 必需:No
  • 表达式:${project.build.directory}/failsafe-reports

跳过:

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

跳过执行:

已弃用。请改用 -DskipTests。
这个旧参数就像 skipTests,但绑定到旧属性 maven.test.skip.exec。
  • 类型:boolean
  • 自:2.3
  • 必需:No
  • 表达式:${maven.test.skip.exec}

跳过:

将此设置为“true”以跳过正在运行的集成测试,但仍会编译它们。不推荐使用它,但有时很方便。
  • 类型:boolean
  • 自:2.4.3-alpha-2
  • 必需:No
  • 表达式:${skipITs}

跳过测试:

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

套件Xml文件:

(仅限 TestNG)TestNG 套件 xml 文件位置列表,以逗号分隔。请注意,suiteXmlFiles 与此插件上的其他几个参数不兼容,例如包含/排除。如果指定了“test”参数,则忽略此参数(允许您运行单个测试而不是整个套件)。
  • 类型:java.io.File[]
  • 自:2.2
  • 必需:No

摘要文件:

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

系统属性:

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

系统属性变量:

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

测试:

指定此参数以按文件名运行单个测试,覆盖includes/excludes参数。您在此处指定的每个模式都将用于创建格式如下的包含模式**/${test}.java,因此您只需键入“-Dtest=MyTest”即可运行名为“foo/MyTest.java”的单个测试。此参数将覆盖 TestNG suiteXmlFiles 参数。
  • 类型:java.lang.String
  • 必需:No
  • 表达式:${it.test}

测试类目录:

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

测试NGArtifactName:

允许您指定 TestNG 工件的名称。如果没有设置, org.testng:testng将被使用。
  • 类型:java.lang.String
  • 自:2.3.1
  • 必需:No
  • 表达式:${testNGArtifactName}
  • 默认:org.testng:testng

测试源目录:

包含测试类源的测试源目录。
  • 类型:java.io.File
  • 自:2.2
  • 必需:Yes
  • 表达式:${project.build.testSourceDirectory}

线程数:

(仅限TestNG)属性thread-count 允许您指定应为此执行分配多少线程。只有与并行一起使用才有意义。
  • 类型:int
  • 自:2.2
  • 必需:No
  • 表达式:${threadCount}

修剪堆栈跟踪:

是否将报告中的堆栈跟踪修剪为仅测试中的行,或显示完整的跟踪。
  • 类型:boolean
  • 自:2.2
  • 必需:No
  • 表达式:${trimStackTrace}
  • 默认:true

使用文件:

生成文件测试报告或仅将测试报告输出到控制台的选项。
  • 类型:boolean
  • 必需:No
  • 表达式:${failsafe.useFile}
  • 默认:true

useManifestOnlyJar:

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

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

使用系统类加载器:

将依赖项传递给系统的类加载器的选项,而不是在分叉时使用隔离的类加载器。防止使用系统的类加载器实现服务提供者查找机制的 JDK 出现问题。默认值为“真”。
  • 类型:java.lang.Boolean
  • 自:2.3
  • 必需:No
  • 表达式:${failsafe.useSystemClassLoader}

使用无限线程:

(仅限junitcore)表示线程池将是无限的。并行参数和类/方法的实际数量将决定。将此设置为 true 会有效地禁用 perCoreThreadCount 和 threadCount。
  • 类型:java.lang.String
  • 自:2.5
  • 必需:No
  • 表达式:${useUnlimitedThreads}

工作目录:

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