测试

API文档:Test

执行 JUnit(3.8.x、4.x 或 5.x)或 TestNG 测试。测试始终在(一个或多个)单独的 JVM 中运行。

下面的示例显示了各种配置选项。

plugins {
    id 'java' // adds 'test' task
}

test {
  // discover and execute JUnit4-based tests
  useJUnit()

  // discover and execute TestNG-based tests
  useTestNG()

  // discover and execute JUnit Platform-based tests
  useJUnitPlatform()

  // set a system property for the test JVM(s)
  systemProperty 'some.prop', 'value'

  // explicitly include or exclude tests
  include 'org/foo/**'
  exclude 'org/boo/**'

  // show standard out and standard error of the test JVM(s) on the console
  testLogging.showStandardStreams = true

  // set heap size for the test JVM(s)
  minHeapSize = "128m"
  maxHeapSize = "512m"

  // set JVM arguments for the test JVM(s)
  jvmArgs '-XX:MaxPermSize=256m'

  // listen to events in the test execution lifecycle
  beforeTest { descriptor ->
     logger.lifecycle("Running test: " + descriptor)
  }

  // fail the 'test' task on the first test failure
  failFast = true

  // skip an actual test execution
  dryRun = true

  // listen to standard out and standard error of the test JVM(s)
  onOutput { descriptor, event ->
     logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
  }
}

Test.getDebug()通过在调用构建时提供 `--debug-jvm` 开关,可以以临时方式 在调试模式下启动测试过程(请参阅 参考资料) 。

gradle someTestTask --debug-jvm

特性

财产描述
allJvmArgs

用于为进程启动 JVM 的完整参数集。这包括定义系统属性、最小/最大堆大小和引导类路径的参数。

binaryResultsDirectory

内部二进制格式的测试结果的根目录属性。

bootstrapClasspath

用于进程的引导类路径。当该类路径为空时,将使用 JVM 的默认引导类路径。

classpath

用于执行测试的类路径。

debug

确定是否为测试进程启用调试。启用后 —  debug = true— 该进程以挂起状态启动,侦听端口 5005。调试时应禁用并行测试执行,如果您使用非零值,则偶尔需要重新连接调试器 Test.getForkEvery()

debugOptions

进程的 Java 调试线路协议属性。如果启用,则将-agentlib:jdwp=... 使用参数中的配置附加到 JVM 参数。

dryRun
孵化

指示此任务是否将跳过单个测试执行。

enableAssertions

如果为进程启用了断言,则返回 true。

environment

用于进程的环境变量。默认为该进程的环境。

excludes

测试执行的排除模式。

executable

要使用的可执行文件的名称。

failFast

指示此任务是否会在第一次失败的测试中失败

forkEvery

在分叉测试进程中执行的测试类的最大数量。当达到此限制时,分叉测试进程将重新启动。

ignoreFailures

指定当此任务执行的验证失败时构建是否应中断。

includes

其中包括测试执行的模式。

javaLauncher

配置用于运行测试的 java 可执行文件。

jvmArgs

用于为进程启动 JVM 的额外参数。不包括系统属性和最小/最大堆大小。

jvmArgumentProviders

用于 fork 的 java 进程的命令行参数提供程序。

maxHeapSize

进程的最大堆大小(如果有)。

maxParallelForks

并行启动的最大测试进程数。

minHeapSize

进程的最小堆大小(如果有)。

modularity

该测试任务的模块路径处理。

options

返回测试框架特定选项。请确保在使用此方法之前调用Test.useJUnit(),Test.useJUnitPlatform()或。Test.useTestNG()

reports

该任务可能产生的报告。

scanForTestClasses

指定是否应检测测试类。当true扫描与包含和排除模式匹配的类以查找测试类时,任何找到的类都会被执行。当 false执行与包含和排除模式匹配的类时。

systemProperties

将用于该进程的系统属性。

testClassesDirs

已编译测试源的目录。

testLogging

允许设置与将哪些测试事件记录到控制台以及详细级别相关的选项。例如,要显示有关异常的更多信息,请使用:

workingDir

进程的工作目录。默认为项目目录。

jacoco插件添加的属性

财产描述
jacoco

JacocoTaskExtension由 jacoco 插件添加。

方法

方法描述
addTestListener(listener)

向此任务注册一个测试侦听器。还可以考虑以下方便的方法来更快地连接到测试执行:AbstractTestTask.beforeTest(groovy.lang.Closure), AbstractTestTask.afterTest(groovy.lang.Closure), AbstractTestTask.beforeSuite(groovy.lang.Closure),AbstractTestTask.afterSuite(groovy.lang.Closure)

addTestOutputListener(listener)

向此任务注册一个输出侦听器。挂钩输出事件的更快方法是使用该AbstractTestTask.onOutput(groovy.lang.Closure)方法。

afterSuite(closure)

添加一个在测试套件执行后通知的关闭。 ATestDescriptorTestResult实例作为参数传递给闭包。

afterTest(closure)

添加一个在测试执行后通知的关闭。 ATestDescriptorTestResult实例作为参数传递给闭包。

beforeSuite(closure)

添加在执行测试套件之前要通知的闭包。实例TestDescriptor作为参数传递给闭包。

beforeTest(closure)

添加在执行测试之前要通知的闭包。实例TestDescriptor作为参数传递给闭包。

bootstrapClasspath(classpath)

将给定值添加到进程的引导类路径的末尾。

copyTo(target)

将这些选项复制到给定选项。

copyTo(target)

将这些选项复制到给定的目标选项。

debugOptions(action)

配置进程的 Java 调试线路协议属性。如果JavaForkOptions.setDebug(boolean)启用,则将-agentlib:jdwp=...使用参数中的配置附加到 JVM 参数。

environment(name, value)

向此进程的环境添加环境变量。

environment(environmentVariables)

为此过程的环境添加一些环境变量。

exclude(excludeSpec)

添加排除规范。可以多次调用此方法来附加新规范。给定的闭包将 FileTreeElement作为其参数传递。闭包应该返回 true 或 false。例子:

exclude(excludes)

为测试类目录中的文件添加排除模式(例如“**/*Test.class”))。

exclude(excludes)

为测试类目录中的文件添加排除模式(例如“**/*Test.class”))。

exclude(excludeSpec)

添加排除规范。可以多次调用此方法来附加新规范。如果未提供排除,则不会排除任何文件。如果提供了排除,则文件不得与要处理的任何排除模式匹配。

executable(executable)

设置要使用的可执行文件的名称。

include(includeSpec)

添加包含规范。可以多次调用此方法来附加新规范。给定的闭包将 aFileTreeElement作为其参数传递 。如果未提供包含,则将包含此容器中的所有文件。如果提供了包含,则文件必须至少匹配要包含的包含模式或规范之一。

include(includes)

添加测试类目录中文件的包含模式(例如“**/*Test.class”))。

include(includes)

添加测试类目录中文件的包含模式(例如“**/*Test.class”))。

include(includeSpec)

添加包含规范。可以多次调用此方法来附加新规范。如果未提供包含,则将包含此容器中的所有文件。如果提供了包含,则文件必须至少匹配要包含的包含模式或规范之一。

jvmArgs(arguments)

添加一些用于启动进程的 JVM 的参数。

jvmArgs(arguments)

添加一些用于启动进程的 JVM 的参数。

onOutput(closure)

添加一个在收到测试输出时收到通知的闭包。 ATestDescriptorTestOutputEvent实例作为参数传递给闭包。

options(testFrameworkConfigure)

配置测试框架特定选项。

removeTestListener(listener)

通过此任务取消注册测试侦听器。此方法只会删除通过调用AbstractTestTask.addTestListener(org.gradle.api.tasks.testing.TestListener)此任务添加的侦听器。如果侦听器已向 Gradle 注册,则使用Gradle.addListener(java.lang.Object)此方法将不会执行任何操作。相反,使用Gradle.removeListener(java.lang.Object).

removeTestOutputListener(listener)

取消注册此任务的测试输出侦听器。此方法只会删除通过调用AbstractTestTask.addTestOutputListener(org.gradle.api.tasks.testing.TestOutputListener)此任务添加的侦听器。如果侦听器已向 Gradle 注册,则使用Gradle.addListener(java.lang.Object)此方法将不会执行任何操作。相反,使用Gradle.removeListener(java.lang.Object).

reports(configureAction)

配置此任务可能生成的报告。

setTestNameIncludePatterns(testNamePattern)

设置要包含在执行中的测试名称模式。支持类或方法名称,支持通配符“*”。有关更多信息,请参阅用户指南中有关测试的章节。有关支持模式的更多信息,请参阅TestFilter

systemProperties(properties)

添加一些用于进程的系统属性。

useJUnit()

指定应使用 JUnit4 来发现和执行测试。

useJUnit(testFrameworkConfigure)

指定应使用 JUnit4 来发现并执行具有附加配置的测试。

useJUnit(testFrameworkConfigure)

指定应使用 JUnit4 来发现并执行具有附加配置的测试。

useJUnitPlatform()

指定应使用 JUnit Platform 来发现和执行测试。

useJUnitPlatform(testFrameworkConfigure)

指定应使用 JUnit Platform 来发现并执行具有附加配置的测试。

useTestNG()

指定应使用 TestNG 来发现和执行测试。

useTestNG(testFrameworkConfigure)

指定应使用 TestNG 来发现并执行具有附加配置的测试。

useTestNG(testFrameworkConfigure)

指定应使用 TestNG 来发现并执行具有附加配置的测试。

workingDir(dir)

设置进程的工作目录。提供的参数根据 进行评估Project.file(java.lang.Object)

脚本块

堵塞描述
options

配置测试框架特定选项。

jacoco插件添加的脚本块

堵塞描述
jacoco

配置JacocoTaskExtensionjacoco 插件添加的内容。

物业详情

List<String> allJvmArgs

用于为进程启动 JVM 的完整参数集。这包括定义系统属性、最小/最大堆大小和引导类路径的参数。

DirectoryProperty binaryResultsDirectory

内部二进制格式的测试结果的根目录属性。

默认:
project.testResultsDir/binary/task.name

FileCollection bootstrapClasspath

用于进程的引导类路径。当该类路径为空时,将使用 JVM 的默认引导类路径。

默认使用java插件:
[]

FileCollection classpath

用于执行测试的类路径。

默认使用java插件:
project.sourceSets.test.runtimeClasspath

boolean debug

确定是否为测试进程启用调试。启用后 —  debug = true— 该进程以挂起状态启动,侦听端口 5005。调试时应禁用并行测试执行,如果您使用非零值,则偶尔需要重新连接调试器 Test.getForkEvery()

从 Gradle 5.6 开始,您可以通过配置端口和其他 Java 调试属性 JavaForkOptions.debugOptions(org.gradle.api.Action)

默认使用java插件:
false

JavaDebugOptions debugOptions(只读)

进程的 Java 调试线路协议属性。如果启用,则将-agentlib:jdwp=... 使用参数中的配置附加到 JVM 参数。

注意:此属性正在酝酿中,可能会在 Gradle 的未来版本中发生更改。

指示此任务是否将跳过单个测试执行。

对于 JUnit 4 和 5,这将报告已跳过的测试。对于 TestNG,这将报告已通过的测试。

仅支持支持本机空运行的 TestNG 版本,即 TestNG 6.14 或更高版本。

boolean enableAssertions

如果为进程启用了断言,则返回 true。

默认使用java插件:
true

Map<String, Object> environment

用于进程的环境变量。默认为该进程的环境。

默认使用java插件:
当前进程的环境

Set<String> excludes

测试执行的排除模式。

默认使用java插件:
[]

String executable

要使用的可执行文件的名称。

默认使用java插件:
当前 JVM 的java命令。

boolean failFast

指示此任务是否会在第一次失败的测试中失败

默认使用java插件:
false

long forkEvery

在分叉测试进程中执行的测试类的最大数量。当达到此限制时,分叉测试进程将重新启动。

默认情况下,Gradle 在执行测试时自动使用单独的 JVM。

  • 0(无限制)表示对所有测试类重用测试过程。这是默认设置。
  • 值表示为每个测试类1启动一个新的测试过程。这是非常昂贵的。
  • 值表示在测试类N之后开始新的测试过程。N

由于停止和启动每个测试过程的成本,此属性可能会对性能产生很大影响。更改此属性的默认值是不常见的。

默认使用java插件:
0

boolean ignoreFailures

指定当此任务执行的验证失败时构建是否应中断。

Set<String> includes

其中包括测试执行的模式。

默认使用java插件:
[]

Property<JavaLauncher> javaLauncher

配置用于运行测试的 java 可执行文件。

默认使用java插件:
java.toolchain

List<String> jvmArgs

用于为进程启动 JVM 的额外参数。不包括系统属性和最小/最大堆大小。

默认使用java插件:
[]

List<CommandLineArgumentProvider> jvmArgumentProviders(只读)

用于 fork 的 java 进程的命令行参数提供程序。

默认使用java插件:
[]

String maxHeapSize

进程的最大堆大小(如果有)。

默认使用java插件:
null

int maxParallelForks

并行启动的最大测试进程数。

默认情况下,Gradle 一次执行一个测试类。

  • 值表示1一次仅在单个测试进程中执行单个测试类。这是默认设置。
  • 值表示将启动N最多测试进程来执行测试类。这可以通过并行运行多个测试类来缩短测试执行时间。N

此属性不能超过当前构建的 max-workers 值。 Gradle 还将限制所有Test任务中启动的测试进程的数量。

默认使用java插件:
1

String minHeapSize

进程的最小堆大小(如果有)。

默认使用java插件:
null

ModularitySpec modularity(只读)

该测试任务的模块路径处理。

TestFrameworkOptions options(只读)

返回测试框架特定选项。请确保在使用此方法之前调用Test.useJUnit(),Test.useJUnitPlatform()或。Test.useTestNG()

TestTaskReports reports(只读)

该任务可能产生的报告。

boolean scanForTestClasses

指定是否应检测测试类。当true扫描与包含和排除模式匹配的类以查找测试类时,任何找到的类都会被执行。当 false执行与包含和排除模式匹配的类时。

默认使用java插件:
true

Map<String, Object> systemProperties

将用于该进程的系统属性。

默认使用java插件:
[:]

FileCollection testClassesDirs

已编译测试源的目录。

默认使用java插件:
project.sourceSets.test.output.classesDirs

TestLoggingContainer testLogging(只读)

允许设置与将哪些测试事件记录到控制台以及详细级别相关的选项。例如,要显示有关异常的更多信息,请使用:

apply plugin: 'java'

test.testLogging {
    exceptionFormat "full"
}

欲了解更多信息,请参阅TestLoggingContainer

File workingDir

进程的工作目录。默认为项目目录。

默认使用java插件:
project.projectDir

JacocoTaskExtension jacoco(只读)

JacocoTaskExtension由 jacoco 插件添加。

方法详情

void addTestListenerTestListener听众)

向此任务注册一个测试侦听器。还可以考虑以下方便的方法来更快地连接到测试执行:AbstractTestTask.beforeTest(groovy.lang.Closure), AbstractTestTask.afterTest(groovy.lang.Closure), AbstractTestTask.beforeSuite(groovy.lang.Closure),AbstractTestTask.afterSuite(groovy.lang.Closure)

该侦听器不会收到其他任务执行的测试的通知。要获得该行为,请使用Gradle.addListener(java.lang.Object).

void addTestOutputListenerTestOutputListener听众)

向此任务注册一个输出侦听器。挂钩输出事件的更快方法是使用该AbstractTestTask.onOutput(groovy.lang.Closure)方法。

void afterSuiteClosure关闭)

添加一个在测试套件执行后通知的关闭。 ATestDescriptorTestResult实例作为参数传递给闭包。

在执行所有测试套件后也会调用此方法。提供的描述符将有一个空的父套件。

void afterTestClosure关闭)

添加一个在测试执行后通知的关闭。 ATestDescriptorTestResult实例作为参数传递给闭包。

void beforeSuiteClosure关闭)

添加在执行测试套件之前要通知的闭包。实例TestDescriptor作为参数传递给闭包。

在执行任何测试套件之前也会调用此方法。提供的描述符将有一个空的父套件。

void beforeTestClosure关闭)

添加在执行测试之前要通知的闭包。实例TestDescriptor作为参数传递给闭包。

Test bootstrapClasspathObject...类路径)

将给定值添加到进程的引导类路径的末尾。

Test copyToJavaForkOptions目标)

将这些选项复制到给定选项。

Test copyToProcessForkOptions目标)

将这些选项复制到给定的目标选项。

void debugOptions(行动)Action<JavaDebugOptions>

配置进程的 Java 调试线路协议属性。如果JavaForkOptions.setDebug(boolean)启用,则将-agentlib:jdwp=...使用参数中的配置附加到 JVM 参数。

Test environmentString名称,Object值)

向此进程的环境添加环境变量。

Test environment(环境变量)Map<String, ?>

为此过程的环境添加一些环境变量。

Test excludeClosure不包括规格)

添加排除规范。可以多次调用此方法来附加新规范。给定的闭包将 FileTreeElement作为其参数传递。闭包应该返回 true 或 false。例子:

copySpec {
  from 'source'
  into 'destination'
  //an example of excluding files from certain configuration:
  exclude { it.file in configurations.someConf.files }
}

如果未提供排除,则不会排除任何文件。如果提供了排除,则文件不得与要处理的任何排除模式匹配。

Test exclude(不包括)Iterable<String>

为测试类目录中的文件添加排除模式(例如“**/*Test.class”))。

Test excludeString...不包括)

为测试类目录中的文件添加排除模式(例如“**/*Test.class”))。

Test exclude(不包括规格)Spec<FileTreeElement>

添加排除规范。可以多次调用此方法来附加新规范。如果未提供排除,则不会排除任何文件。如果提供了排除,则文件不得与要处理的任何排除模式匹配。

Test executableObject可执行)

设置要使用的可执行文件的名称。

Test includeClosure包括规格)

添加包含规范。可以多次调用此方法来附加新规范。给定的闭包将 aFileTreeElement作为其参数传递 。如果未提供包含,则将包含此容器中的所有文件。如果提供了包含,则文件必须至少匹配要包含的包含模式或规范之一。

Test include(包括)Iterable<String>

添加测试类目录中文件的包含模式(例如“**/*Test.class”))。

Test includeString...包括)

添加测试类目录中文件的包含模式(例如“**/*Test.class”))。

Test include(包括规格)Spec<FileTreeElement>

添加包含规范。可以多次调用此方法来附加新规范。如果未提供包含,则将包含此容器中的所有文件。如果提供了包含,则文件必须至少匹配要包含的包含模式或规范之一。

Test jvmArgsIterable<?>参数)

添加一些用于启动进程的 JVM 的参数。

Test jvmArgsObject...参数)

添加一些用于启动进程的 JVM 的参数。

void onOutputClosure关闭)

添加一个在收到测试输出时收到通知的闭包。 ATestDescriptorTestOutputEvent实例作为参数传递给闭包。

apply plugin: 'java'

test {
   onOutput { descriptor, event ->
       if (event.destination == TestOutputEvent.Destination.StdErr) {
           logger.error("Test: " + descriptor + ", error: " + event.message)
       }
   }
}

TestFrameworkOptions options(测试框架配置)Action<? super TestFrameworkOptions>

配置测试框架特定选项。

Test在测试套件之外创建任务时,您应该在使用此方法之前调用Test.useJUnit(),Test.useJUnitPlatform()或。Test.useTestNG()如果未设置测试框架,任务将采用 JUnit4。

void removeTestListenerTestListener听众)

通过此任务取消注册测试侦听器。此方法只会删除通过调用AbstractTestTask.addTestListener(org.gradle.api.tasks.testing.TestListener)此任务添加的侦听器。如果侦听器已向 Gradle 注册,则使用Gradle.addListener(java.lang.Object)此方法将不会执行任何操作。相反,使用Gradle.removeListener(java.lang.Object).

void removeTestOutputListenerTestOutputListener听众)

取消注册此任务的测试输出侦听器。此方法只会删除通过调用AbstractTestTask.addTestOutputListener(org.gradle.api.tasks.testing.TestOutputListener)此任务添加的侦听器。如果侦听器已向 Gradle 注册,则使用Gradle.addListener(java.lang.Object)此方法将不会执行任何操作。相反,使用Gradle.removeListener(java.lang.Object).

TestTaskReports reports(配置动作)Action<? super TestTaskReports>

配置此任务可能生成的报告。

AbstractTestTask setTestNameIncludePatterns(测试名称模式)List<String>

设置要包含在执行中的测试名称模式。支持类或方法名称,支持通配符“*”。有关更多信息,请参阅用户指南中有关测试的章节。有关支持模式的更多信息,请参阅TestFilter

Test systemProperties(特性)Map<String, ?>

添加一些用于进程的系统属性。

void useJUnit()

指定应使用 JUnit4 来发现和执行测试。

void useJUnitClosure测试框架配置)

指定应使用 JUnit4 来发现并执行具有附加配置的测试。

提供的操作配置 的实例JUnitOptions

void useJUnit(测试框架配置)Action<? super JUnitOptions>

指定应使用 JUnit4 来发现并执行具有附加配置的测试。

提供的操作配置 的实例JUnitOptions

void useJUnitPlatform()

指定应使用 JUnit Platform 来发现和执行测试。

如果您的测试使用 JUnit Jupiter/JUnit5,请使用此选项。

JUnit Platform 支持多个测试引擎,允许在其之上构建其他测试框架。即使您不直接使用 JUnit,您也可能需要使用此选项。

void useJUnitPlatform(测试框架配置)Action<? super JUnitPlatformOptions>

指定应使用 JUnit Platform 来发现并执行具有附加配置的测试。

如果您的测试使用 JUnit Jupiter/JUnit5,请使用此选项。

JUnit Platform 支持多个测试引擎,允许在其之上构建其他测试框架。即使您不直接使用 JUnit,您也可能需要使用此选项。

提供的操作配置 的实例JUnitPlatformOptions

void useTestNG()

指定应使用 TestNG 来发现和执行测试。

void useTestNGClosure测试框架配置)

指定应使用 TestNG 来发现并执行具有附加配置的测试。

提供的操作配置 的实例TestNGOptions

void useTestNG(测试框架配置)Action<? super TestNGOptions>

指定应使用 TestNG 来发现并执行具有附加配置的测试。

提供的操作配置 的实例TestNGOptions

Test workingDirObject目录)

设置进程的工作目录。提供的参数根据 进行评估Project.file(java.lang.Object)

脚本块详细信息

options{ }

配置测试框架特定选项。

Test在测试套件之外创建任务时,您应该在使用此方法之前调用Test.useJUnit(),Test.useJUnitPlatform()或。Test.useTestNG()如果未设置测试框架,任务将采用 JUnit4。

jacoco{ }

配置JacocoTaskExtensionjacoco 插件添加的内容。