本节提供有关 Gradle 的 Jtest 任务及其参数的信息。提供以下任务:

jtest

执行 Jtest 的 Gradle 任务。

属性

名称接受的值 / 数据类型说明是否必需
compilation编译

手动配置数据的说明(请参阅手动自定义编译数据

compilations列表手动配置数据的说明列表(请参阅手动自定义编译数据
dataUpdate字符串

允许手动更新从构建中收集的编译数据。

用户属性为jtest.dataUpdate

config字符串

内建、DTP 或用户自定义测试配置的名称。

用户属性为jtest.config

exclude字符串

指定所选资源中的文件或包的子集并从分析中排除。您可以提供限定名称或使用 Ant glob 匹配更多文件名。

用户属性为jtest.exclude

excludes列表

exclude 参数列表。

用户属性为jtest.excludes

failtrue | false

报告任何违规时,构建失败。

用户属性为jtest.fail

home路径

指定 Jtest 安装目录。如果未定义,将使用 PATH 中指定的 Jtest 位置。

用户属性为jtest.home

建议指定
ignoredIds列表

忽略的 compilation ID 列表。

用户属性为jtest.ignoredids

include字符串

指定所选资源中的文件或包的子集并包含在分析中。

用户属性为jtest.include

includes列表

include 参数列表。

用户属性为jtest.includes

publishtrue | false启用将本地分析的结果发送到 DTP 服务器

用户属性为jtest.publish

report路径

指定创建报告的目录。

用户属性为jtest.report

resource字符串

指定分析的输入范围。如果没有指定资源,Jtest 将分析每个构建项目中的资源。

用户属性为jtest.resource

resources列表

resource 参数列表。

用户属性为jtest.resources

settings路径

包含自定义配置设置的 *properties 文件的绝对或相对路径。

用户属性为:jtest.settings

settingsList列表

settings 参数列表。

用户属性为jtest.settingsList

showDetailstrue | false

显示详细的进度信息。

用户属性为:jtest.showdetails

showSettingstrue | false

打印当前设置和自定义设置,以及每个设置和自定义设置的位置信息(例如,在 jtest.properties 文件中)。

用户属性为jtest.showsettings

projectNameTemplate字符串

项目名称模板。此参数允许使用选项 [group]、[name]、[version]、[path] 和 [basedir] 配置模式。

用户属性为jtest.projectNameTemplate

skiptrue | false

允许跳过 Jtest 执行阶段。如果设置为 true,则只生成 jtest.data.json 数据文件。

用户属性为jtest.skip

参数的详细信息

config

测试配置的名称。支持以下配置类型:

  • 内建测试配置,例如 "builtin://Recommended Rules"
  • dtp 测试配置,例如 "dtp://New Config"
  • 用户自定义测试配置,例如 "user://Your Config"

用户自定义测试配置应作为 *.properties 文件存储在 [INSTALL_DIR]/configs/user 目录中。


dataUpdate

允许手动更新从构建中收集的编译数据。

  • 支持的操作:prepend、append 和 set。
  • 支持的数据类型:classpath、bootpath、sourcepath、resourcepath、binarypath、sourcecode(仅限 set)和 encoding(仅限 set)
  • 范围:将更新收集的所有项目数据

更多信息,请参阅手动自定义编译数据编译数据模型

exclude

指定所选资源中的文件或包的子集并从分析中排除。可以提供限定名称。您可以使用 glob 模式来匹配更多的文件名。

示例 1:以下模式会排除 com.parasoft 包及其子包中的所有文件:/com/parasoft/**

示例 2:以下模式会排除 com.parasoft.jtest 包中的所有文件,但不排除其子包中的所有文件:/com/parasoft/jtest/*

示例 3:以下模式会排除指定目录及所有子目录中的所有文件:path:/home/user/project/src/test/java/**

include

指定所选资源中的文件或包的子集并包含在分析中。您可以使用 glob 模式来匹配更多的文件名。

示例 1:以下模式会包括 com.parasoft 包及其子包中的所有文件:/com/parasoft/**

示例 2:以下模式会包括 com.parasoft.jtest 包中的所有文件,但不排除其子包中的所有文件:/com/parasoft/jtest/*

示例 3:以下模式会包括指定目录和所有子目录中的所有文件:path:/home/user/project/src/test/java/**

resource

指定分析的输入范围。如果没有指定资源,Jtest 将分析每个构建项目中的资源。

使用以下模式指定路径: ${ProjectName}/my/src/dir/my/package/file.java"。您可以使用以下通配符:

  • ? - 匹配一个字符
  • * - 匹配零个或多个字符,不包括路径分隔符(/ 字符)
  • ** - 匹配整个路径,包括路径分隔符(/ 字符)

settings

包含自定义配置设置的 *properties 文件的绝对或相对路径。

某些设置名称可能与构建系统插件专用的设置不一致。详细信息,请参阅配置设置

projectNameTemplate

项目名称模板。默认情况下,以下模式用于在 json 中创建项目名称:"group:name"。该参数允许使用 [group]、[name]、[version]、[path] 和 [basedir] 选项配置模式,例如,使项目名称与 Eclipse 中的项目名称兼容。

如果更改已经与 DTP 集成的项目的模式,DTP 将无法识别该项目。它会将改变模式后的项目视为另一个项目。详细信息,请参阅 DTP 文档。

参数类型的详细信息

以下示例假定 Gradle 的 Jtest 插件已经在 Gradle 构建脚本中正确配置和应用;请参阅配置 Gradle 的 Jtest 插件

编译类型

  • 属性:Compilation
  • 嵌套对象
jtest {
    home = "path/to/jtest"
    compilation {
        id = "main"
        override = true
    }
}

列表类型

  • 属性:resources
  • 指定与构建期间收集的资源匹配的资源模式列表。
jtest {
        home = "path/to/jtest"
        resources = [
                "**.java",
                "myGradleProjectName/src/com/mycompany/models/**/*.properties"
        ]
}

字符串类型

  • 属性:Exclude
  • 指定所选资源中的文件或包的子集并从分析中排除。
jtest {
    home = "path/to/jtest"
    exclude = "com/mycompany/models/**/NotInteresting*.properties"
}

更多信息,请参阅编译数据模型

jtest-agent

使用 Jtest 收集覆盖率的 Gradle 任务。

参数

名称接受的值 / 数据类型说明是否必需
home路径

Jtest 安装目录。

用户属性为jtest.home

enableJacocotrue | false

用于启用或禁用通过 Jacoco 引擎收集行覆盖率的功能。

默认值为false

用户属性为jtest.enableJacoco

skiptrue | false

允许跳过 Jtest 任务。

默认值为false

用户属性为jtest.skip

runtimeDataLocation路径

覆盖率运行时数据存储文件的路径。

用户属性为jtest.runtimeDataLocation

metadataLocation路径

覆盖率元数据存储文件的路径。

用户属性为jtest.metadataLocation

coverage

用于配置覆盖率收集的参数集。

  • jtest.coverage.skip - 禁用覆盖率收集。
  • jtest.coverage.includes - 用于包含类的 <Glob> 模式。将收集覆盖率信息。
  • jtest.coverage.excludes - 用于排除类的 <Glob> 模式。不收集覆盖率信息。
  • jtest.coverage.testIncludes - 用于包含测试类的 <Glob> 模式。测试用例会被分配覆盖率。
  • jtest.coverage.testExcludes - 用于排除测试类的 <Glob> 模式。测试用例不会被分配覆盖率。

参数的详细信息

coverage

默认值为:

jtest { 
  /* other parameters  */ 
  coverage { 
    skip = false 
    includes = [ 'package/**' ] 
    excludes = [ ] 
    testIncludes = [ 'package/Test.class' ] 
    testExcludes = [ ] 
  } 
}

runtimeDataLocation

默认值为: ${basedir}/parasoft/jtest-instrument/runtimedata.data

metadataLocation

默认值为:${basedir}/parasoft/jtest-instrument/metadata.data

jtest-monitor

此任务扫描构建以生成 Jtest Java 代理的设置,并在使用 monitorLocation 参数指定的位置中创建一个 monitor 包。

monitor 包中包含以下文件:

  • static_coverage.xml - 包含静态覆盖率信息的文件
  • agent.jar - Jtest Java 覆盖率代理 jar 包
  • agent.properties - 包含构建过程中生成的范围参数和其他属性的代理设置文件
  • agent.sh/agent.bat - 生成应用程序监控所需的 Jtest Java 代理 VM 参数的脚本
  • opentelemetry-javaagent.jar 和 jtest-otel-ext.jar - 在多用户覆盖率模式中使用的文件:原始 OpenTelemetry Java 代理及其 Jtest 扩展。此扩展用于收集将收集到的覆盖率数据分配给特定用户所需的信息。这些文件<INSTALL_DIR>/integration/coverage 目录拷贝。

命令行执行

确保在命令行中执行 jtest:monitor 任务之前编译测试和类(编译阶段)。

排除测试类

当 jtest-monitor 任务运行时,Gradle 不识别测试类。为确保不收集测试类的覆盖率信息,强烈建议使用 jtest.exclude 并指定包含测试的包路径,例如 -Djtest.exclude=path:**/test/**。

参数

名称接受的值 / 数据类型说明是否必需
agentServerEnabledtrue | false

用于启用代理服务器的选项。

用户属性为:jtest.agentServerEnabled

autostartAgenttrue | false

用于自动启用覆盖率收集的选项。

用户属性为jtest.autostartAgent

compilation编译手动配置数据的说明(请参阅手动自定义编译数据
coverage

用于配置覆盖率收集的参数集。

  • jtest.coverage.skip - 禁用覆盖率收集。
  • jtest.coverage.includes - 用于包含类的 <Glob> 模式。将收集覆盖率信息。
  • jtest.coverage.excludes - 用于排除类的 <Glob> 模式。不收集覆盖率信息。
  • jtest.coverage.testIncludes - 用于包含测试类的 <Glob> 模式。测试用例会被分配覆盖率。
  • jtest.coverage.testExcludes - 用于排除测试类的 <Glob> 模式。测试用例不会被分配覆盖率。

enableJacocotrue | false

用于启用或禁用通过 Jacoco 引擎收集行覆盖率的功能。

默认值为false

用户属性为jtest.enableJacoco

exclude字符串

指定所选资源中的文件或包的子集并从分析中排除。您可以提供限定名称或使用 Ant glob 匹配更多文件名。

用户属性为jtest.exclude

excludes列表

exclude 参数列表。

用户属性为jtest.excludes

home路径

Jtest 安装目录。

用户属性为jtest.home

建议指定
ignoredIds列表

忽略的 compilation ID 列表。

用户属性为jtest.ignoredids

include字符串

指定所选资源中的文件或包的子集并包含在分析中。

用户属性为jtest.include

includes列表

include 参数列表。

用户属性为jtest.includes

monitorLocation

路径

monitor 包创建位置的路径。

用户属性为:jtest.monitorLocation

publishtrue | false启用将本地分析的结果发送到 DTP 服务器

用户属性为jtest.publish

report路径

指定创建报告的目录。

用户属性为jtest.report

resource字符串

指定分析的输入范围。如果没有指定资源,Jtest 将分析每个构建项目中的资源。

用户属性为jtest.resource

resources列表

resource 参数列表。

用户属性为jtest.resources

settings路径

包含自定义配置设置的 *properties 文件的绝对或相对路径。

用户属性为:jtest.settings

settingsList列表

settings 参数列表。

用户属性为jtest.settingsList

showDetailstrue | false

显示详细的进度信息。

用户属性为:jtest.showdetails

showSettingstrue | false

打印当前设置和自定义设置,以及每个设置和自定义设置的位置信息(例如,在 jtest.properties 文件中)。

用户属性为jtest.showsettings

projectNameTemplate字符串

项目名称模板。此参数允许使用选项 [group]、[name]、[version]、[path] 和 [basedir] 配置模式。

用户属性为jtest.projectNameTemplate

skiptrue | false

允许跳过 Jtest 执行阶段。如果设置为 true,则只生成 jtest.data.json 数据文件。

用户属性为jtest.skip

参数的详细信息

exclude

指定所选资源中的文件或包的子集并从分析中排除。可以提供限定名称。您可以使用 glob 模式来匹配更多的文件名。

示例 1:以下模式会排除 com.parasoft 包及其子包中的所有文件:/com/parasoft/**

示例 2:以下模式会排除 com.parasoft.jtest 包中的所有文件,但不排除其子包中的所有文件:/com/parasoft/jtest/*

示例 3:以下模式会排除指定目录及所有子目录中的所有文件:path:/home/user/project/src/test/java/**

include

指定所选资源中的文件或包的子集并包含在分析中。您可以使用 glob 模式来匹配更多的文件名。

示例 1:以下模式会包括 com.parasoft 包及其子包中的所有文件:/com/parasoft/**

示例 2:以下模式会包括 com.parasoft.jtest 包中的所有文件,但不排除其子包中的所有文件:/com/parasoft/jtest/*

示例 3:以下模式会包括指定目录和所有子目录中的所有文件:path:/home/user/project/src/test/java/**

resource

指定分析的输入范围。如果没有指定资源,Jtest 将分析每个构建项目中的资源。

使用以下模式指定路径: ${ProjectName}/my/src/dir/my/package/file.java"。您可以使用以下通配符:

  • ? - 匹配一个字符
  • * - 匹配零个或多个字符,不包括路径分隔符(/ 字符)
  • ** - 匹配整个路径,包括路径分隔符(/ 字符)

settings

包含自定义配置设置的 *properties 文件的绝对或相对路径。

某些设置名称可能与构建系统插件专用的设置不一致。详细信息,请参阅配置设置

projectNameTemplate

项目名称模板。默认情况下,以下模式用于在 json 中创建项目名称:"group:name"。该参数允许使用 [group]、[name]、[version]、[path] 和 [basedir] 选项配置模式,例如,使项目名称与 Eclipse 中的项目名称兼容。

如果更改已经与 DTP 集成的项目的模式,DTP 将无法识别该项目。它会将改变模式后的项目视为另一个项目。详细信息,请参阅 DTP 文档。

参数类型的详细信息

以下示例假定 Gradle 的 Jtest 插件已经在 Gradle 构建脚本中正确配置和应用;请参阅配置 Gradle 的 Jtest 插件

编译类型

  • 属性:Compilation
  • 嵌套对象
jtest {
    home = "path/to/jtest"
    compilation {
        id = "main"
        override = true
    }
}

列表类型

  • 属性:resources
  • 指定与构建期间收集的资源匹配的资源模式列表。
jtest {
        home = "path/to/jtest"
        resources = [
                "**.java",
                "myGradleProjectName/src/com/mycompany/models/**/*.properties"
        ]
}

字符串类型

  • 属性:Exclude
  • 指定所选资源中的文件或包的子集并从分析中排除。
jtest {
    home = "path/to/jtest"
    exclude = "com/mycompany/models/**/NotInteresting*.properties"
}

更多信息,请参阅编译数据模型

affectedTests

该目标由 Jtest 自带的测试影响分析插件提供,用于对项目执行基于变更的测试(请参阅测试影响分析)。

必需的参数

名称用户属性接受的值 / 数据类型说明

referenceCoverageFile

jtest.referenceCoverageFile路径 | URL

Jtest 在分析过程中生成的 coverage.xml 文件的路径。该文件包含运行期间收集的覆盖率数据。

如果指定了 URL,该文件将被下载到 Jtest 执行目录,并在使用 clean 命令执行 Gradle 时删除。若要更改默认的下载位置,则需配置 referenceStore 参数。

默认值为: <BUILD_DIRECTORY>/jtest/reference-store/coverage.xml

referenceReportFile

jtest.referenceReportFile路径 | URL

Jtest 在分析过程中生成的 report.xml 文件的路径。该文件包含有关在运行期间执行的单元测试的信息。

如果指定了 URL,该文件将被下载到 Jtest 执行目录,并在使用 clean 命令执行 Gradle 时删除。若要更改默认的下载位置,则需配置 referenceStore 参数。

默认值为: <BUILD_DIRECTORY>/jtest/reference-store/report.xml

jtestHomejtest.home路径

Jtest 安装目录的路径。Jtest 安装目录已经使用 Maven 设置或 JTEST_HOME 环境变量进行配置的情况下则不需要指定。

可选参数

名称用户属性接受的值 / 数据类型说明

referenceStore

jtest.referenceStore路径

缓存目录的路径,用于存储通过 referenceCoverageFilereferenceReportFile 参数指定的 URL 下载的参考文件。

这些缓存文件将用作测试影响分析的基准,直到从指定目录中删除为止。删除后会通过 URL 重新下载。

runFailedTestsjtest.runFailedTeststrue | false

用于在测试运行中包括上一次运行中的所有失败测试,即使它们没有受到变更的影响。

默认为:false

runModifiedTestsjtest.runModifiedTeststrue | false

用于在测试运行中包括新增的测试和修改的测试(即使它们没有受到生产代码变更的影响)。

默认为:true

settingsjtest.settings路径

包含自定义配置设置的 *properties 文件的路径。


settingsListjtest.settingsList

settings 参数列表。使用此设置指定的多个文件将在执行前合并。

Jtest 安装目录下 jtest.properties 文件中配置的设置会自动包括在内。

  • No labels