首页 > 代码库 > 跳出Robotium单进程限制,实现跨进程调用的两种方式浅谈
跳出Robotium单进程限制,实现跨进程调用的两种方式浅谈
用过Robotium做Android自动化测试的同学都知道,Robotium因为继承了instrumentation而无法进行跨进程的调用,比如模拟按键点击(据说4.3以后instrumentation有了getUIAutomator的入口,然后就木有然后了,本人没有亲试且不在本文讨论中)。
本人亲试了两种实现方式,经实验均能实现简单的事件,比如:发送按键、点击、长按、拖动等,最终的调用方式都采用4.1以后的input命令实现,当然你得是root。具体命令如下:
shell@android:/ $ inputinputusage: input ... input text <string> input keyevent <key code number or name> input tap <x> <y> input swipe <x1> <y1> <x2> <y2>
跨应用方式一:关键字:Broadcasting
跨应用方式二:关键字:aidl
下面具体来说说如何实现:
第一种方式比较简单,一句话描述一下就是,通过在测试setup中启动一个service,在service中动态注册一个广播监听从客户端发送过来的文本命令,接收到之后通过Runtime去执行。实现步骤如下:
1、新建一个service,在service创建的时候动态注册一个广播(至于为啥要动态注册,其实静态也可以,但静态的话不能主动解除),在onReceive方法中实现执行命令的方法。如:
device.sendKeyEvent(intent.getStringExtra("cmd"));
2、安装这个service项目到手机;
3、在robotium的setup中start这个service,再到用例发送命令到service中执行;
4、最后可以清理service和广播。
第二种方式,简单说,通过建立aidl文件,实现其接口通过IPC通道跨应用,原理跟第一种是一样的,客户端发送命令到服务端执行。(这里不详细说了,aidl按照官网一步步做就好了)
跳出Robotium单进程限制,实现跨进程调用的两种方式浅谈
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。