在本地运行Azure Pipeline Gradle任务

时间:2019-10-14 13:31:20

标签: gradle azure-pipelines

我正在尝试通过在本地运行Azure管道来调试Gradle任务。该任务的YAML定义是:

- task: Gradle@2
  displayName: 'Test Project'
  inputs:
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx7000m'
    sonarQubeRunAnalysis: true
    sonarQubeGradlePluginVersion: 2.6.2
    testRunTitle: $(DISPLAY_NAME)
    codeCoverageToolOption: JaCoCo
    publishJUnitResults: true
    testResultsFiles: '**/build/test-results/test/TEST-*.xml'
    tasks: "test -Dtest.profile=unit --parallel"

我正在尝试找出等效的本地命令。我已经达到了

./gradlew test -DcodeCoverageToolOption=JaCoCo -Dtest.profile=unit --parallel

但是,我不确定如何传递其他参数,例如codeCoverageToolOption: JaCoCo

1 个答案:

答案 0 :(得分:1)

1.codeCoverageToolOption:JaCoCo

对于Azure Devops,codeCoverageToolOption: JaCoCo意味着选择代码覆盖率工具JaCoCo来确定测试用例覆盖的代码。但是,没有这样的命令可以让选择选择要使用的代码覆盖率工具。

在gradle中,类似的操作是首先在JaCoCo中将dependencies插件添加为build.gradle。现在,您可以调用jacocoTestReport任务来创建代码覆盖率报告。

./gradlew test jacocoTestReport

注意 :如果jacocoTestReport文件不存在,test.exec任务将不执行任何操作。因此,您应该始终先运行testbuild任务


2。 testResultsFiles

对于YAML中的testResultsFiles,它用于指定应放入的测试结果文件。但是,对于gradle而言,其默认路径为build/reports/jacoco/test/html/index.html,该文件在您的build.gradle文件中指定。简单示例:

task codeCoverageReport(type: JacocoReport) {
    executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
    subprojects.each {
        sourceSets it.sourceSets.main
    }
    reports {
        xml.enabled true
        xml.destination "${buildDir}/reports/jacoco/{TestResultFileName}.xml"
        html.enabled false
        csv.enabled false
    }
}

3。 publishJUnitResults:是

在azure devops中,我们不使用gradle命令将测试结果文件发布到VSTS中。我们使用脚本CodeCoverage Publish来实现此目的。