运行connectedAndroidTest并跳过卸载

Tho*_*asV 8 android automated-tests gradle android-gradle-plugin

有没有办法在任务结束时调用任务connectedAndroidTest并跳过卸载任务?

在测试执行结束时,已从设备上卸载了该应用程序,但我想将该应用程序保留在设备上。

来自http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-tests

如前所述,需要连接设备的检查会通过名为connectedCheck的锚定任务启动。这取决于任务connectedDebugAndroidTest,因此将运行它。此任务执行以下操作:

  • 确保已构建应用程序和测试应用程序(取决于assembleDebug和assembleDebugAndroidTest)。
  • 安装两个应用程序。
  • 运行测试。
  • 卸载两个应用程序。

Bla*_*laz 8

查看gradle插件的源码,无法阻止在测试任务结束时卸载应用程序。您可以在SimpleTestCallableandroid gradle插件类中进行检查。

从我看来,有两种选择可以满足您的需求。

第一个是在完成连接检查后重新安装应用程序。执行此操作的命令如下所示。./gradlew connectedCheck installDebug installDebugAndroidTest这将在设备上执行测试并从中删除应用程序。但是之后,它将重新安装应用程序并测试应用程序。因此,应用程序仍将被删除然后再安装,这意味着有些麻烦,但由于您在同一gradle执行中执行,因此至少不会对应用程序进行两次重新编译。

第二种选择是不使用gradle执行测试,而是使用adb。为此,您首先需要安装应用程序并通过gradle测试应用程序。 ./gradlew installDebug installDebugAndroidTest

之后,您可以通过adb执行测试。通过校准adb shell am instrument -w com.example.test/android.support.test.runner.AndroidJUnitRunner

完成此操作后,由于仍安装了应用程序和测试应用程序,因此您可以运行cli测试。

使用第二种方法,您将失去执行测试机智gradle的所有好处。例如代码覆盖率和在多个过程中执行等。

  • 第一种方法的缺点是,只要将apk完全删除并从头开始安装,就会导致删除数据(共享首选项,sqlite db)。 (2认同)