没有应用源代码的使用espresso的Android自动化

时间:2016-02-05 06:00:40

标签: android gradle automation android-testing android-espresso

使用没有源代码的espresso自动化Android应用程序是不是可行的。 Gradle期望这样的结构:

src/main/
src/androidTest/

但是我想在不同版本的应用程序上运行这些自动化测试?这可以通过安装应用程序并运行测试来实现吗?

这里说它不可能:

Automation of Android APK with Espresso

4 个答案:

答案 0 :(得分:2)

我不确定这是否与你有关,但我会留下我的评论。首先是一些一般信息:

White-box Testing简单地说 - 使用源代码测试应用程序。它需要在设计测试时编程和理解应用程序架构

Black-box Testing正在测试您的应用,不包含应用的源代码。它还需要一些编程,但是你可以在不了解架构的情况下设计测试。

在你的情况下:

  

使用没有源代码的espresso自动化Android应用程序是不可能的。

根据上面两个定义 - 是的,可以使用黑盒测试框架。

  

但是我想在不同版本的应用程序上运行这些自动化测试?这可以通过安装应用程序并运行测试来实现吗?

是的,可以使用黑盒应用程序。

但是,您的选择 - Espresso是一个白盒测试框架。您有两种可能的解决方案:

  1. 获取您要测试的版本的源代码,并为该版本编写测试。
  2. 尝试黑盒测试框架 - 如果您需要,我可以为您提供进一步的建议

答案 1 :(得分:2)

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

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

  1. 在AndroidManifest.xml中注册了 instrumentation ,一旦安装了测试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自动化测试,但它更难以使测试代码变得难看。

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

答案 2 :(得分:0)

据我所知,espresso需要应用程序源代码。所以只用apk版本就无法实现自动化。

答案 3 :(得分:0)

据我所知,你的应用程序的旧版本没有espresso测试。

使用不同版本的应用程序打开提交,进入assembleAndroidTest包含测试并运行monkey Gradle任务以创建已包含测试的应用程序。

此版本的应用程序可能对Testdroid平台有用。

我不是这方面的专家,但我也建议您使用monkeyrunner工具

在此处阅读:http://developer.android.com/tools/help/monkey.html

如果您对Python有所了解,可以使用{{1}}进行此操作。

检查:http://developer.android.com/tools/help/monkeyrunner_concepts.html

这两个工具将帮助您在不同版本的应用程序上运行测试。

希望有所帮助