Android APK与Espresso的自动化

Dwa*_*ick 9 automation android ui-automation android-espresso

我试图自动化我的Android应用程序的一些UI(我没有源代码所以我使用的是APK文件).

我已经阅读了这里提供的教程以及Google 提供的一些教程,但所有教程都需要源代码.

如果有人知道如何在没有源代码的情况下使用Espresso自动化UI,请提供帮助.

我使用IntelliJ作为IDE和app android 5.0.2版.

cmo*_*opm 6

答案是肯定的,您可以使用Espresso来运行自动化测试,而无需使用应用程序源代码。

Espresso基于Android工具框架,这意味着自动化测试已内置到单个测试apk中。此测试apk与正常应用apk不同:

  1. 在AndroidManifest.xml中注册了一个工具,一旦安装了测试apk,它将被注册到Android系统

  2. 为了运行自动化测试,必须使用与应用程序apk相同的签名对测试apk进行签名。

  3. 测试apk与应用apk的运行过程相同

以上是任何基于仪器的测试框架的唯一要求。因此,不依赖源代码。

但是为什么我们会发现大多数Espresso教程都混有源代码?因为这样会使测试更简单?

  1. 您可以使用类ActivityTestRule轻松控制活动生命周期。

  2. 您可以轻松测试应用程序定义的类。

  3. 您可以使用小部件ID测试UI小部件

相反,如果不使用源代码进行编译,则必须编写大量反射代码来获取所需的类。例如:

  1. 您必须使用Class.forName加载入口活动并启动它

  2. 您必须使用Java反射来测试应用程序定义的类

  3. 您必须使用文字信息来查找UI小部件,因为您没有UI小部件的ID

我认为这是由于上述缺点所致,这使Google倾向于将Espresso测试与源代码一起构建。

综上所述,可以在没有应用程序源代码的情况下运行Espresso自动化测试,但是这样做更加困难,并且使测试代码很难看。

您可以从AndroidTestWithoutSource引用示例项目。


And*_*Guy 2

要使用 espresso,您需要了解一些有关 UI 元素本身的信息(例如 id 和 type)。当您没有源代码时,您可以使用“uiautomatorviewer”工具,它是 Android SDK 的一部分。

http://developer.android.com/tools/testing-support-library/index.html#uia-viewer