Vir*_*rus 5 automation android gradle android-testing android-espresso
在没有源代码的情况下,是否无法使用 espresso 自动化 android 应用程序。Gradle 期望这样的结构:
src/main/
src/androidTest/
Run Code Online (Sandbox Code Playgroud)
但我想在不同版本的应用程序上运行这些自动化测试?这是否可以仅通过安装应用程序并运行测试来实现?
这里说它不可能:
答案是肯定的,您可以使用 Espresso 运行自动化测试,而无需应用源代码。
Espresso 基于 Android 检测框架,这意味着自动化测试内置于单个测试 apk 中。这个测试apk与普通应用apk不同:
在AndroidManifest.xml中注册了一个instrumentation,一旦安装了test apk,就会注册到Android系统中
测试 apk 必须使用与应用程序 apk 相同的签名进行签名,以便运行自动化测试
测试 apk 在与应用程序 apk 相同的进程中运行
以上是任何基于仪器的测试框架的唯一要求。所以没有源代码的依赖。
但是为什么我们发现大多数 Espresso 教程都混有源代码?因为它会让测试更简单?
您可以使用类ActivityTestRule轻松控制活动生命周期。
您可以轻松测试应用程序定义的类。
您可以使用小部件 ID 测试 UI 小部件
相反,如果不使用源代码进行编译,则必须编写大量反射代码才能获得所需的类。例如:
您必须使用Class.forName加载入口活动并启动它
您必须使用 Java 反射来测试应用程序定义的类
您必须使用文字信息来查找 UI 小部件,因为您没有 UI 小部件的 id
综上所述,在没有应用源代码的情况下运行 Espresso 自动化测试是可以的,但它更难,并且会使测试代码变得丑陋。
您可以参考AndroidTestWithoutSource 中的示例项目。
归档时间: |
|
查看次数: |
4048 次 |
最近记录: |