跨进程操作在Robotium中的应用
Robotium是一款优秀的Android自动化测试框架,它在黑盒自动化测试方面具有明显的优势。然而,Robotium的一个显著缺点是它必须与被测系统签名保持一致,并且不能进行任何跨进程的操作。这是因为Robotium是基于instrumentation机制的,它与被测进程运行在同一进程空间,这导致了它无法跨进程操作任何对象。
为了解决Robotium的跨进程操作限制,有开发者基于ADB框架提出了一个解决方案。这个框架允许Robotium在不违反签名限制的情况下进行跨进程操作。它通过在手机中运行adb命令来实现跨进程操作,而不是像原来那样直接在被测进程中操作。这个框架包含三个主要的包,分别用于获取被测对象、提供对日期时间、图片操作以及正则表达式和shell语句操作的封装。
实现跨进程操作的具体方法包括以下几个步骤:
创建测试工程:首先按照常规的android测试工程的建法,创建一个常规测试工程。然后在工程中引入robotium和adbForAndroid的jar包。
使用Uiautomatorviewer查看界面中的对象信息:然后使用对应的方法来操作对象。
发送广播:通过在测试setup中启动一个service,动态注册一个广播监听从客户端发送过来的文本命令,接收到之后通过Runtime去执行。
使用adb命令:利用adb相关命令就可以实现跨进程操作。
这个解决方案的优点是轻量级、操作简单、使用方便,并且轻松跨进程,因此被广泛应用于Android自动化测试中。
在使用基于ADB框架的解决方案时,需要注意一个问题,那就是adb运行在Robotium框架中时,由于权限受到android系统的限制,可能会抛出InputStreamcannotbenull的异常。这个问题的出现是因为adb命令框架是在手机中运行的,而不是在PC端,这导致了权限上的差异。
综上所述,跨进程操作在Robotium中的应用可以通过基于ADB框架的解决方案来实现,但是需要注意权限和异常处理等问题。