Uiautomator2.0
【摘要】 简介Google Android Developers 在2015年3月就发布了UiAutomator 2.0版本。重大特性1.U2 基于 Instrumentation,使用Instrumentation test runner即可运行UiAutomator,反之,也即在基于Instrumentation的test中也能使用UiAutomator; 可以获取应用Context,可以使用An...
简介
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直接指定父类也可以在子类中输入文字。
注意事项
必须与被测应用签名一致,且系统安装被测应用的情况下执行测试用例。
获取参数
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 ,
配置如下:
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等
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)