gradle - 在本地运行 Azure Pipeline Gradle 任务
问题描述
我正在尝试通过在本地运行它来调试 Azure Pipeline 中的 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.codeCoverageToolOption:JaCoCo
对于 Azure Devops,codeCoverageToolOption: JaCoCo
意味着选择一个代码覆盖工具JaCoCo
来确定测试用例覆盖的代码。但是,gradle 没有这样的命令来选择要使用的代码覆盖率工具。
在 gradle 中,类似的操作是首先添加JaCoCo
插件。现在,您可以调用task 来创建代码覆盖率报告。dependencies
build.gradle
jacocoTestReport
./gradlew test jacocoTestReport
注意:如果文件不存在,该jacocoTestReport
任务将不执行任何操作。test.exec
所以,你应该总是先运行test
orbuild
任务
2. 测试结果文件
对于testResultsFiles
在 YAML 中,它用于指定应该放入的测试结果文件。但是,对于 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. 发布JUnitResults: true
在 azure devops 中,我们不会使用 gradle 命令将测试结果文件发布到 VSTS。我们使用脚本来实现这一点:CodeCoverage Publish。
推荐阅读
- android-studio - 虚拟设备无法在 Android Studio 上运行
- android - 未附加适配器:跳过布局和空对象引用
- sql - “最近”窗口函数查询的数据库索引
- javascript - React 子组件道具更新行为不一致?
- php - Wordpress 网站 - 在多个 ajax 调用到 PHP 脚本之间移动时如何在 JQuery 中保留 event.target.files?
- javascript - 在js中创建了弹出窗口,但关闭后不会打开
- php - 在 PHP 常量中使用计算值有什么好处吗?
- python - Python Chatterbot 与 learn_response 函数有关的问题
- r - 创建具有已知结果和概率的向量
- python - 尝试在python中使用for循环创建一串位数字