使用 espresso 的 Android 自动化,无需应用源代码

Vir*_*rus 5 automation android gradle android-testing android-espresso

在没有源代码的情况下,是否无法使用 espresso 自动化 android 应用程序。Gradle 期望这样的结构:

src/main/
src/androidTest/
Run Code Online (Sandbox Code Playgroud)

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

这里说它不可能:

使用 Espresso 自动化 Android APK

cmo*_*opm 5

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

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

  1. 在AndroidManifest.xml中注册了一个instrumentation,一旦安装了test apk,就会注册到Android系统中

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

  3. 测试 apk 在与应用程序 apk 相同的进程中运行

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

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

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

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

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

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

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

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

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

综上所述,在没有应用源代码的情况下运行 Espresso 自动化测试是可以的,但它更难,并且会使测试代码变得丑陋。

您可以参考AndroidTestWithoutSource 中的示例项目。


She*_*ami 0

据我所知,espresso 需要应用程序源代码。因此不可能仅通过 apk 构建来实现自动化。