Android Robotium跨应用处理方法
作者:网络转载 发布时间:[ 2014/8/15 10:27:45 ] 推荐标签:跨应用 安卓
相信用过一段时间Robotium的同学一般都遇到过如下情况:界面跳转到被测程序外以后,Robotium毫无对策了,这也是Instrumentation框架致命的一个缺点;然而领导是不会管你这些很“充分”的理由的…..
Ok,既然我们有这样的需求,还是想办法解决吧。调研了几天终还是实现了一个曲线救国的方法:
实现原理:编写一个程序A,用于接收CASE中发送的指定广播,当程序A接收到指定的广播后会响应你注入的动作事件。
准备工作:
熟悉Service 、BoradCastReceiver、input keyevent, 有不清楚的同学可以先百度下以上知识模块。
具体实现:
1、首先为了方便我们使用,我们可以设置为程序A为开机启动一个Service,该Service中注册一个BoardCastReceiver用于接收一个特定action的广播,设置一个IntentFilter:IntentFilter mIntentFilter=new IntentFilter(); mIntentFilter.addAction(“android.zered.action”);然后在BoardCastReceiver的OnReceive方法中使用Runtime.getRuntime.exec(cmdB)执行我们Case中发送过来的指令(input keyevent xx 当然也可以是其他的一些shell命令)。注意:关于设置程序开机启动,3.1以后Android系统对广播接收做了安全处理——未启动过的程序是不能接收广播的,当然我们还是有方法解决:即把该程序设置为系统级应用即可,然后把该程序push到system/app下重启手机;
2、步骤1的完成已经为我们完成了一个命令执行端(可以理解为CS的server端),现在我们需要做的是发送这个广播,发送广播的方法为context.sendbroadcast,所以我们在Case中可以使用solo.getCurrentActivity.sendbroadcast发送广播;
剩下的是我们要把这个命令行cmdB封装到广播中,Intent intent=new Intent();intent.setAction(“android.zered.action”);intent.putExtra(TAG,cmdB);solo.getCurrentActivity.sendbroadcast(intent);
Ok,这样以来一个带有命令行的广播算是发送出去了。
3、以上步骤完成以后,步骤1启动的程序A中的Service接收到步骤2发送的广播以后,会执行我们发送的命令行指令cmdB了:Runtime.getRuntime.exec(intent.getStringExtra(TAG))
以上是Robotium跨应用的一种处理方法,欢迎大家拍砖。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11