1

我想在我的多项目构建中汇总测试报告。我有一个项目结构,其中禁用了一些测试。我已经查看了gradle 示例代码,它在默认设置下运行良好,但是一旦我禁用子项目上的测试任务,它就会停止工作。(它会查找显然不存在的 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 在任务执行时为真。

我怎样才能使这个任务工作?

4

1 回答 1

0

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

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

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

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

于 2013-06-11T05:35:34.710 回答