2

这个问题开始。

如果我有一个包含两个Test任务实例的构建,那么完全分离这两个任务以使其输出不重叠的最佳(最干净、最少代码、最健壮)的方法是什么?

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

4

4 回答 4

6

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

tasks.withType(Test) {
    reports.html.destination = file("${reporting.baseDir}/${name}")
}
于 2013-10-08T15:14:39.613 回答
0

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

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

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

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

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

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

于 2012-10-02T09:30:39.087 回答
0

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

tasks.withType(Test) {
    reports.html.destination = file("${reporting.baseDir}/${name}")
    reports.junitXml.destination = file("${testResultsDir}/${name}")
}
于 2016-05-26T14:43:55.617 回答
0

只是一个更新。该reports.html.destination方式已弃用。

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

tasks.withType(Test) {
  reports.html.setDestination file("${reporting.baseDir}/${name}")
}
于 2018-04-05T04:14:25.830 回答