Robotium是一款开源的Android自动化测试框架,可对Android的native app进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。之前的native app性能监测项目中有对它做过调研,并通过对它的改造实现了项目的需求;

整个框架从功能上来分主要有三部分,它们是local_pc,Messager service和TestRunner;
1)local_pc部署在pc机器上,主要负责在本地执行testcases、发送控制消息到远程设备和记录TestRunner反馈数据的工作;主要模块有:solotests,remotecontrol,solo和messagesender;

2)Messager service部署在android设备上,它作为local_pc和TestRunner的沟通者,通过与local_pc建立socket连接来实现双向tcp通信,同时使用双向通信android.os.messager来实现Messager service与instrumentation testrunner的ipc通信;Messager service主要包括pc通信模块和ipc通信模块;

3)TestRunner部署在android设备上,它是Inustrumentation TestRunner,它根据从messager service接收到的消息调用合适的processer,processer会启动运行相应app的ActivityInstrumentationTestCase2实现类的setUp方法,该方法中首先启动目标app的入口activity,之后将控制权交给solo实例,在solo实例中通过Inustrumentation来真正控制目标app的行为;整个控制过程中TestRunner通过Messager service与local pc进行交互,实时接收local pc传过来的动作指令消息并反馈动作执行结果,solo则封装了Inustrumentation对app的控制行为;

懒了一点,拿项目的框架图来凑数,与robotium的整个框架基本如出一辙,凑合看吧,图在下面;

图1.0 robotium整体框架图

git:https://github.com/fifa2002nb/robotium4apm