我正在尝试自动化我的Android应用程序的一些UI(我没有源代码,因此我使用的是APK文件)。
我已经阅读了提供here的教程以及Google提供的一些教程,但所有教程都需要源代码。
如果有人知道如何在没有源代码的情况下使用Espresso自动化UI,请提供帮助。
我使用IntelliJ作为IDE和app android 5.0.2版。
答案 0 :(得分:5)
答案是肯定的,您可以在没有应用源代码的情况下使用Espresso运行自动化测试。
Espresso基于Android检测框架,这意味着自动化测试内置于单个测试apk中。此测试apk与普通应用程序apk不同:
在AndroidManifest.xml中注册了一个工具,一旦安装了测试apk就会注册到Android系统
测试apk必须使用与应用程序apk相同的签名进行签名,以便运行自动化测试
测试apk在与应用程序apk
以上是任何基于仪器的测试框架的唯一要求。所以没有源代码的依赖。
但是为什么我们发现大多数Espresso教程都混合了源代码?因为它会使测试更简单:
您可以使用ActivityTestRule类轻松控制活动生命周期。
您可以轻松地测试应用程序定义的类。
您可以使用小部件ID
相反,如果不使用源代码进行编译,则必须编写大量反射代码来获取所需的类。例如:
您必须使用Class.forName加载入口活动并启动它
您必须使用Java反射来测试应用程序定义的类
您必须使用文字信息来查找UI小部件,因为您没有UI小部件的ID
我认为由于上述缺点,谷歌更愿意与源代码一起构建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