我正在运行一些Android测试测试,这些测试要求我正在测试的应用程序是全新安装 - 手机上的应用程序应该不存在。
我通常通过运行
来做到这一点./gradlew uninstallAll
./gradlew connectedInstrumentTest
但是,有时我忘记卸载并且我的测试失败了。
我想强制uninstallAll
在我运行connectedInstrumentTest
时自动运行。我该怎么做?
在我的build.gradle中,我尝试了
connectedInstrumentTest.doFirst {
uninstallAll.execute()
}
但是这给了我
无法在项目':myapp'上找到属性'connectedInstrumentTest'。
我试过
connectedInstrumentTest.dependsOn(uninstallAll)
我得到了同样的错误。
这可能归结为我对Gradle缺乏了解。我已经搜索了这个,但是唯一的例子似乎是自定义任务,而不是Android项目已经内置的任务。
答案 0 :(得分:2)
@Opal的评论让我有点阅读,我最终得到了这个工作
tasks.whenTaskAdded { task ->
if(task.name.equals("connectedInstrumentTest")){
task.dependsOn(uninstallAll)
}
}
我相信问题是试图过早添加依赖项,但将其放入tasks.whenTaskAdded
似乎工作正常。现在,当我运行connectedInstrumentTest
时,首先卸载应用程序。
答案 1 :(得分:0)
通常
connectedInstrumentTest.dependsOn(uninstallAll)
应该可以工作,但我认为android插件会在评估整个buildcript之后创建一些任务。您可以尝试将上面的代码段放在afterEvaluate块中:
project.afterEvaluate{
connectedInstrumentTest.dependsOn(uninstallAll)
}
欢呼声, 勒