gradle:聚合多项目testReport并禁用某些测试

时间:2013-06-10 09:38:56

标签: build gradle automated-tests

我想在多项目构建中聚合测试报告。我有一个项目结构,我已经禁用了一些测试。我已经查看了gradle sample code,它可以在默认设置下正常工作,但只要我在子项目上禁用测试任务就会停止工作。 (它查找显然不存在的testresult / * .bin文件。)

我的项目布局如下所示:

root 
 +--- ProjectA
 |    \--- ProjectA.gradle
 +--- ProjectB
 |    \--- ProjectB.gradle
 \--- build.gradle

ProjectA.gradle看起来像这样:

test {
   enabled = false
}

rootprojects build.gradle有testReport任务。

正如我之前所说,ProjectA上的任务失败。我试着像这样修改示例代码:

task testReport(type: TestReport) {
    destinationDir = file("$buildDir/reports/allTests")
    reportOn subprojects*.test.findAll { test ->
        test.getEnabled()
    }
}

仍然不起作用,因为当任务执行时test.enabled为真。

如何使此任务有效?

1 个答案:

答案 0 :(得分:0)

  

它查找显然不存在的testresult / * .bin文件

可能值得http://forums.gradle.org的错误报告。

  

仍然不起作用,因为当任务执行时test.enabled为真。

实际上false任务执行时testReport,但配置时true testReport。 (Gradle具有不同的配置和执行阶段。)这是因为默认情况下,在子项目构建脚本之前会对父项目构建脚本进行评估。解决此问题的一种方法是将evaluationDependsOnChildren()任务的声明移到父构建脚本的底部,并在此之前添加{{1}}。