1.UI Automator2.0的详细解释
UIAutomator是android的自动化测试框架,可跨APP。与instrumentation框架不同,UIAutomator不需要测试对象源码,因此,为黑盒测试框架。同时,与Monkey不同,UIAutomator不以坐标为主线,而是通过控件属性过滤(比如搜索文本为“提交”的按钮),获取控件本身。这很像小时候玩红白机游戏所用的金手指软件。
UIAutomator的缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。
更多详细内容可参考UIAutomator的官方文档。
2.UI Automator2.0的初步使用
我们使用Android Studio创建一个UIAutomator2.0的工程。 而过程,只需要两步。
(a)创建一个简单的Android项目(有无Activity无所谓,即便就一个Hello Activity也行)。
(b)在对应module的build.gradle文件中,添加对uiautomator的dependends引用(将下面的引用语法字段放入Gradle Scripts的Module.app的build.gradle的dependencies{}
中,注意:就如截图中显示的一样,当你参照我的下面的引用语法字段时,可能UI Automator有新的版本了,你可以根据提示来使用新的版本)
implementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
注意,我们根据Android Studio默认创建的一个新的Android工程的minSdkVersion默认是15,即会导致我们现在引入了uiautomator依赖的工程无法Build通过,刚才博主就在这卡了20分钟,如果你的Android项目引入了uiautomator依赖后Build报错,很有可能是这个问题。
其实,不管我们需不需要对这个项目进行测试,不管我们是否在对应module的build.gradle文件中,添加对uiautomator的dependends引用,我们在Android Studio中创建一个新的项目时,Android Studio总是会为我们创建一个测试样例ExampleInstrumentedTest。
其中我们来解读一下Android Studio为我们创建一个测试样例的代码
我们就用运行在当前Android Studio的APP作为测试对象实现两个最简单测试操作:打开APP、关闭APP。
那么,我们需要做哪些准备?
(a)获取packageName
(b)获取设备用例
(c)判断设备状态
(d)操作APP