我正在使用带有SonarQube插件的Gradle,并通过以下方式触发它:
gradle sonarqube
然而,它调用了内置的 "test" 任务,该任务运行包括目前并非全部通过的集成测试在内的所有测试。我希望能够指定 sonarqube 任务使用类似于 "unitTest" 任务而不是运行所有内容的 "test" 任务。
团队中的其他人在 IDE 中运行 cucumber 测试,也使用 test 任务,因此当前当我在主要的 "test" 任务中排除 cucumber 测试时,他们必须取消该排除,以便启动他们的 cucumber 测试,这样并不理想。
我使用以下语法包含 sonarqube:
plugins {
id "org.sonarqube" version "2.5"
}
我该如何使SonarQube任务使用另一个测试任务?
更新:
使用以下代码解决了问题,先让子项目运行它们的单元测试以生成所需的测试报告数据,然后再运行SonarQube任务。
// Removes the dependency on main test task and runs unitTests for test code coverage statistics
tasks['sonarqube'].with {
dependsOn.clear()
subprojects.each { dependsOn("${it.name}:unitTests") }
}
dependsOn.clear()清除所有依赖关系,因此如果有多个,我可能需要执行类似以下操作:
taskName.enabled=false
除非有更简单的方法,否则在任务完成后重新启用它?我尝试了dependsOn.remove("test")但没有效果。
sonarqube
任务依赖于test
任务会导致运行所有类型为Test
的任务。 - jordanpg