使用没有源代码的espresso自动化Android应用程序是不是可行的。 Gradle期望这样的结构:
src/main/
src/androidTest/
但是我想在不同版本的应用程序上运行这些自动化测试?这可以通过安装应用程序并运行测试来实现吗?
这里说它不可能:
答案 0 :(得分:2)
我不确定这是否与你有关,但我会留下我的评论。首先是一些一般信息:
White-box Testing简单地说 - 使用源代码测试应用程序。它需要在设计测试时编程和理解应用程序架构
Black-box Testing正在测试您的应用,不包含应用的源代码。它还需要一些编程,但是你可以在不了解架构的情况下设计测试。
在你的情况下:
使用没有源代码的espresso自动化Android应用程序是不可能的。
根据上面两个定义 - 是的,可以使用黑盒测试框架。
但是我想在不同版本的应用程序上运行这些自动化测试?这可以通过安装应用程序并运行测试来实现吗?
是的,可以使用黑盒应用程序。
但是,您的选择 - Espresso是一个白盒测试框架。您有两种可能的解决方案:
答案 1 :(得分:2)
答案是肯定的,您可以在没有应用源代码的情况下使用Espresso运行自动化测试。
Espresso基于Android检测框架,这意味着自动化测试内置于单个测试apk中。此测试apk与普通应用程序apk不同:
在AndroidManifest.xml中注册了 instrumentation ,一旦安装了测试apk,就会注册到Android系统
测试apk必须使用与应用程序apk相同的签名进行签名,以便运行自动化测试
测试apk在与应用程序apk
以上是任何基于仪器的测试框架的唯一要求。所以没有源代码的依赖。
但是为什么我们发现大多数Espresso教程都混合了源代码?因为它会使测试更简单:
您可以使用 ActivityTestRule 类轻松控制活动生命周期。
您可以轻松地测试应用程序定义的类。
您可以使用小部件ID
相反,如果不使用源代码进行编译,则必须编写大量反射代码来获取所需的类。例如:
您必须使用 Class.forName 加载入口活动并启动它
您必须使用Java反射来测试应用程序定义的类
您必须使用文字信息来查找UI小部件,因为您没有UI小部件的ID
总而言之,可以在没有应用程序源代码的情况下运行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
这两个工具将帮助您在不同版本的应用程序上运行测试。
希望有所帮助