如何在Gradle构建中干净地分隔测试任务的两个实例

时间:2012-10-01 14:18:35

标签: gradle

继续this question

如果我有一个包含Test任务的两个实例的构建,那么将这两个任务完全分开以使它们的输出不重叠的最佳(最干净,最少代码,最强大)方法是什么? / p>

我已尝试设置其testResultsDirtestReportsDir属性,但这似乎没有按预期工作。 (也就是说,输出被写入单独的目录,但是每次运行时两个任务仍然会重新运行它们各自的测试。)

4 个答案:

答案 0 :(得分:6)

从gradle 1.8开始更新当前情况:自gradle 1.3以来,dty的答案中的testReportDir和reportsDir属性已弃用。测试结果现在在“test-results”目录中自动分离,并为HTML报告设置不同的目标目录,调用

tasks.withType(Test) {
    reports.html.destination = file("${reporting.baseDir}/${name}")
}

答案 1 :(得分:0)

再一次,雷内指出了我正确的方向。谢谢,Rene。

事实证明这种方法确实有效,但我一定做错了。

作为参考,在定义了所有Test任务后,我在构建中添加了以下内容:

tasks.withType(Test) {
    testReportDir = new File("${reportsDir}/${testReportDirName}/${name}")
    testResultsDir = new File("${buildDir}/${testResultsDirName}/${name}")
}

这将导致Test任务的所有实例通过将其任务名称作为其目录层次结构的一部分而彼此隔离。

然而,我仍然觉得这有点邪恶,必须有一种更清洁的方法来实现这一点,我还没有找到!

答案 2 :(得分:0)

Ingo Kegel的回答并没有解决结果目录,只报告了目录。这意味着可以构建特定测试类型的测试报告,其中包含的测试结果多于该类型。这也可以通过设置结果目录来解决。

tasks.withType(Test) {
    reports.html.destination = file("${reporting.baseDir}/${name}")
    reports.junitXml.destination = file("${testResultsDir}/${name}")
}

答案 3 :(得分:0)

只是一个更新。不推荐reports.html.destination方式。

这是"新"方式(Gradle> 4.x):

tasks.withType(Test) {
  reports.html.setDestination file("${reporting.baseDir}/${name}")
}
相关问题