Android APK与Espresso的自动化

时间:2015-09-04 08:09:27

标签: android automation ui-automation android-espresso

我正在尝试自动化我的Android应用程序的一些UI(我没有源代码,因此我使用的是APK文件)。

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

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

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

3 个答案:

答案 0 :(得分:5)

答案是肯定的,您可以在没有应用源代码的情况下使用Espresso运行自动化测试。

Espresso基于Android检测框架,这意味着自动化测试内置于单个测试apk中。此测试apk与普通应用程序apk不同:

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

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

  3. 测试apk在与应用程序apk

  4. 相同的过程中运行

    以上是任何基于仪器的测试框架的唯一要求。所以没有源代码的依赖。

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

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

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

    3. 您可以使用小部件ID

    4. 测试UI小部件

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

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

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

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

      4. 我认为由于上述缺点,谷歌更愿意与源代码一起构建Espresso测试。

        总而言之,可以在没有应用程序源代码的情况下运行Espresso自动化测试,但它更难以使测试代码变得难看。

        您可以从AndroidTestWithoutSource参考示例项目。

答案 1 :(得分:3)

  

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

这是因为Espresso是仪器测试的一部分,它需要源代码。

其他工具 - 例如UI Automator和monkeyrunner - 不需要源代码。

  

由于Espresso与以前版本的Android更向后兼容,并且还具有优于UIAutomator的性能优势,因此我想使用Espresso

然后与该应用程序的开发人员交谈,并与该人安排测试该应用程序,并获得完整的源代码访问权。

答案 2 :(得分:2)

要使用espresso,您需要了解UI元素本身(如id和type)。如果您没有源代码,则可以使用" uiautomatorviewer"工具是Android SDK的一部分。

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