本文转载于:http://blog.csdn.net/jack_chen3/article/details/41927395
测试框架图:
Android测试环境的核心是Instrumentation框架,Instrumentation框架通过将主程序和测试程序在同一个进程来实现这些功能。在测试工程的manifest文件中添加<Instrumentation>元素来指定要测试的应用程序。官网api:http://developer.android.com/reference/android/app/Instrumentation.html
Android的Instrumentation对某个监控程序进行交互时:
1.启动时将项目配置文件AndroidManifest.xml文件中的instrumentation标签中的内容进行初始化(标明了所使用的测试运行类,目标项目包名)。
2.执行测试时(可用adb命令触发),将启动目标应用的Activity,同时将待测试ActivityThread作为一个引用进行初始化。
3.在测试时测试项目的任何对目标项目进行的操作,都会采用异步的方式,将消息体放在目标程序的MessageQueue中,这样目标程序在看到自己的MessageQueue中有内容时就会执行。
InstrumentationTestRunner继承Instrumentation部署在android设备上,Messager service也部署在android设备上用于接收消息调用合适的processer,processer会启运行相应app的ActivitiyInstrumentationTestCase2实现类的setUp方法,首先启动目标app的入口activity,每一个test测试类都放在MessageQueue中,solo实例通过Instrumentation来真正控制目标app的行为。整个控制过程中用例放在消息体中通过Instrumentation进行通信,而且没完成一个testcase都会重新拉起应用跑下一个testcase。
原理参阅网址:http://www.apmbe.com/robotium