是否可以使用Gradle在Android上仅运行失败的一组测试?
此刻,我按如下方式运行测试。
./gradle connectedDebugAndroidTest
有些测试有时会由于难以控制的环境问题而失败,而我想做的是只能运行那些失败的测试并将结果与先前的测试结果合并。
例如,如果我有100个测试,而90个成功,则我想重新运行失败的10个测试。如果那10次第二次通过,我想将这些结果与原始测试运行合并。
似乎已经为Gradle进行了多次讨论,但似乎还没有解决方案。
https://github.com/gradle/gradle/issues/4068
https://github.com/gradle/gradle/issues/4450
https://github.com/gradle/gradle/issues/1283
谢谢!
答案 0 :(得分:2)
如果您想自动重新运行失败的测试作为它们失败的同一构建的一部分,并在重试成功时成功构建,您可以使用 Test Retry Gradle 插件.这将重新运行每个失败的测试一定次数,如果总体上发生太多失败,则可以选择使构建失败。
plugins {
id 'org.gradle.test-retry' version '1.2.0'
}
test {
retry {
maxRetries = 3
maxFailures = 20 // Optional attribute
}
}
答案 1 :(得分:1)
之所以没有办法只重新运行失败的测试,是因为它弄糟了Gradle当前的工作方式。发生这种情况是因为在第一次运行时,Gradle知道通过了90个测试。如果您更新代码,然后仅重新运行10个失败的测试(使用您希望它们添加的新选项),则Gradle会认为所有测试均已通过。但是,事实并非如此,因为先前通过的测试可能已从修复失败测试的更新中删除。
尽管如此,问题已解决。 Gradle首先重新运行失败的测试,并为--fail-fast
任务提供test
标志。这样可以有效地完成您想要的操作(即,仅重新运行失败的测试)。