问题是:
- 有一个安卓应用程序。我想执行 android 仪器测试(gradle 任务是 connectedCheck)。
- 我想在浏览器中打开生成的报告,而不管测试是否成功。
这里是我的任务代码:
task showReportInBrowser << {
String resultsPath = projectDir.toString().replaceAll("\\\\", '/')
resultsPath = resultsPath + '/build/reports/androidTests/connected/index.html'
java.awt.Desktop.desktop.browse resultsPath.toURI()
}
我试过这个:
connectedCheck.finalizedBy showReportInBrowser
如果 connectedCheck 正常执行,我会得到我想要的。 但是如果 connectedCheck 失败,我的 showReportInBrowser 就不会执行。
我认为这是因为 connectedCheck 任务依赖于 connectedDebugAndroidTest 任务,该任务在执行时失败,因此 connectedCheck 甚至没有' t 启动,我的 showReportInBrowser 也没有启动。
所以我尝试了这个:
connectedDebugAndroidTest.finalizedBy showReportInBrowser
但是 gradle 说:Error:(75, 0) Could not find property 'connectedDebugAndroidTest' on project ':app'。 打开文件
我不明白:为什么 connectedCheck 和 connectedDebugAndroidTest 都显示在 gradle verification 组中,但我可以在我的构建脚本中使用只有connectedCheck?
我怎样才能达到我的目标?
最佳答案
在我的例子中,失败发生在 connectedDebugAndroidTest
任务中。因此,要忽略特定子任务中的所有失败,只需使用类似的东西:
connectedDebugAndroidTest {
ignoreFailures = true
}
但在这种情况下它会导致
Error:(66, 0) Gradle DSL method not found: 'connectedDebugAndroidTest()'
如图here您可以使用以下旁路:
project.gradle.taskGraph.whenReady {
connectedDebugAndroidTest {
ignoreFailures = true
}
}
关于android - 如何在另一个任务之后运行 gradle 任务,即使是最后一个任务也有失败的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062761/