首页 > 系统服务 > 详细

跳出Robotium单进程限制,实现跨进程调用的两种方式浅谈

时间:2014-11-14 10:38:17      阅读:1406      评论:0      收藏:0      [点我收藏+]

用过Robotium做Android自动化测试的同学都知道,Robotium因为继承了instrumentation而无法进行跨进程的调用,比如模拟按键点击(据说4.3以后instrumentation有了getUIAutomator的入口,然后就木有然后了,本人没有亲试且不在本文讨论中)。

本人亲试了两种实现方式,经实验均能实现简单的事件,比如:发送按键、点击、长按、拖动等,最终的调用方式都采用4.1以后的input命令实现,当然你得是root。具体命令如下:

shell@android:/ $ input

input

usage: 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单进程限制,实现跨进程调用的两种方式浅谈

原文:http://www.cnblogs.com/xiao-kkp/p/4095558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!