我有一个带有仪器测试的android项目。 我正在尝试在
connectedAndroidTest
之后立即运行自定义 gradle 任务。
我希望此自定义任务无论运行状态如何
connectedAndroidTest
都运行,即无论失败还是通过。
此自定义 gradle 任务尝试在仪器测试运行后从设备中提取测试工件。
这是我在应用程序的 build.gradle 中的任务依赖项配置的样子:
tasks.register("pullData", Exec) {
// code to pull data
}
gradle.projectEvaluated {
connectedAndroidTest.finalizedBy pullData
}
当 connecteAndroidTest 通过时,将从设备下载文件,但当失败时,gradle 任务会失败,并且 最终任务“pullData”不会执行。
我的问题是:无论测试结果如何,如何在
connectedAndroidTest
之后运行任务?为什么当我的测试失败时 FinalizedBy 不起作用?
非常感谢对此的任何帮助。谢谢你:)
默认情况下,当任何单个测试失败时,测试任务都会导致构建失败,因此任何后续任务都不会运行。您需要关闭此功能才能获得您想要的行为。
您可以针对您的特定测试任务执行以下操作:
tasks.named("connectedAndroidTest") {
ignoreFailures = true
}
这样做的缺点是,当您的测试失败时,构建不会失败,这可能不是您更普遍想要的。解决这个问题将涉及进一步的构建重新设计,包括不尊重问题中在每次测试运行后运行
pullData
的请求;由于这些原因,对可能方法的讨论可能超出了这个问题的范围。