Uiautomator2.0
简介
Google Android Developers 在 2015 年 3 月就发布了 UiAutomator 2.0 版本。
重大特性
1.U2 基于 Instrumentation,使用 Instrumentation test runner 即可运行 UiAutomator,反之,也即在基于 Instrumentation 的 test 中也能使用 UiAutomator; 可以获取应用 Context,可以使用 Android 服务及接口。
2.Log 日志输出变更。U1 可以使用 System.out.print 输出流回显至执行端,而 U2 输出到 Logcat。
3.Uiautomator1.0 与 2.0 包名不一致 com.android.uiautomator.core. -> android.support.test.uiautomator。
4.基于 Junit4,测试用例无需继承于任何父类,方法名不限,使用 Annotation 进行; U1 需要继承 UiAutomatorTestCase,测试方法需要以 test 开头。
5.与 U1 的 Maven 或 Ant 构建方式不同,U2 采用 Gradle 进行构建; U2 输出为 APK,Android 工程,而 U1 为 Java 工程,输出 jar 包。
6.新增 UiObject2、Until、By、BySelector 等接口, 详细请参考官方文档。 其中,U2 必须明确 EditText 框才能向里面输入文字,U1 直接指定父类也可以在子类中输入文字。<section></section>启动命令变化<br style="box-sizing: border-box;"/>
注意事项
必须与被测应用签名一致,且系统安装被测应用的情况下执行测试用例。
获取参数
u2 测试框架基于 apk,拥有权限类似 APP,无法执行 dump 等 shell 权限操作。可以通过系统签名、root、device.executeShellCommand(注意只支持 API 21+)、Java 守护进程方式执行。
在 Android 4.4 手机出现 NoClassDefFoundError 问题,
Instrumentation
消息为
INSTRUMENTATION_RESULT: longMsg=java.lang.NoClassDefFoundError:
org.junit.runner.manipulation.Filter$1 解决: MultiDex 手动拆包 A ,
配置如下:<br style="box-sizing: border-box;"/>
uiautomator2.0 应用
使用 AndroidStudio 创建项目时会自动引入相关依赖等工作,新建工程只要在对应目录下编写测试用例即可执行。如需手动配置,操作步骤如下:
项目集成
配置 gradle 文件,引入依赖包
用例编写
在 modle/src/androidTest/java/packageName 下创建用例(新建应用会自动构建一条测试用例,可以直接运行,否则需要手动创建如上目录及用例文件)
用例执行
1、通过 gradle project -> module-> tasks -> build -> assembleAndroidTest 构建 Android 测试 apk,然后安装。
2、通过命令如下命令启动测试用例
Api UiDevice
1.UiDevice 代表设备状态,为单例模式。
UiDevice 的功能包括:
①获取设备信息:屏幕分辨率,旋转状态,亮灭屏状态等
②操作:案件,坐标操作,滑动,拖拽,灭屏唤醒屏幕,截图等
③监听器功能
2.UiDevice 写法有两种,推荐第一种方式,第二种可能会引起某些问题而导致无法运行。
①UiDevice.getInstance().pressHome();
②getUiDevice().pressHome();
按键相关的 API,常用的按键包括 HOME,MENU,BACK,VOLUME_UP,VOLUME_DOWN,RecentApps,POWER 等
评论