UiAutomator2.0升级填坑记
SkySeraph May. 28th 2017
Email:skyseraph00@163.com
更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com
啰嗦
Google Android Developers 在2015年3月就发布了UiAutomator 2.0版本(下文简称U2),而公司的核心产品中用到还是UiAutomator老版本(下文简称U1),业界用U2的也不是很多,虽然有诸多问题和不便(如高版本OS中不支持Remote Debug等),但大家似乎在苟延残喘中麻木了。 公司以前也有专家做过研究和探索,毕竟老项目是万级别的,涉及诸多算法和复杂业务逻辑,遇到几个问题最终不了了之。于是乎,又到了我手里了。
重大特性
1. 基于 Instrumentation,使用Instrumentation test runner即可运行UiAutomator,反之,也即在基于Instrumentation的test中也能使用UiAutomator; 可以获取应用Context,可以使用Android服务及接口。
2. 基于 Junit4,测试用例无需继承于任何父类,方法名不限,使用Annotation进行; U1需要继承UiAutomatorTestCase,测试方法需要以test开头.
3. 与U1的Maven或Ant构建方式不同,U2采用Gradle进行构建; U2输出为APK,Android工程,而U1为Java工程,输出jar包。
4. 新增UiObject2、Until、By、BySelector等接口, 详细请参考官方文档。
其中,U2必须明确EditText框才能向里面输入文字,U1直接指定父类也可以在子类中输入文字。
5. Log日志输出变更。U1可以使用System.out.print输出流回显至执行端,而U2输出到Logcat。
6. 命令运行差异。
adb shell uiautomator runtest xx.jar -c package.name.ClassName adb shell am instrument -w -r -e