robotium原理

robotium集成instrumentation



Android测试环境的核心是Instrumentation框架,Instrumentation框架通过将主程序和测试程序在同一个进程来实现这些功能。在测试工程的manifest文件中添加<Instrumentation>元素来指定要测试的应用程序。官网api:http://developer.android.com/reference/android/app/Instrumentation.html 

AndroidInstrumentation对某个监控程序进行交互时:

1.启动时将项目配置文件AndroidManifest.xml文件中的instrumentation标签中的内容进行初始化(标明了所使用的测试运行类,目标项目包名)

2.执行测试时(可用adb命令触发),将启动目标应用的Activity,同时将待测试ActivityThread作为一个引用进行初始化。

3.在测试时测试项目的任何对目标项目进行的操作,都会采用异步的方式,将消息体放在目标程序的MessageQueue中,这样目标程序在看到自己的MessageQueue中有内容时就会执行。

InstrumentationTestRunner继承Instrumentation部署在android设备上,Messager service也部署在android设备上用于接收消息调用合适的processerprocesser会启运行相应appActivitiyInstrumentationTestCase2实现类的setUp方法,首先启动目标app的入口activity,每一个test测试类都放在MessageQueue中,solo实例通过Instrumentation来真正控制目标app的行为。整个控制过程中用例放在消息体中通过Instrumentation进行通信,而且没完成一个testcase都会重新拉起应用跑下一个testcase

原理参阅网址:http://www.apmbe.com/robotium

http://wenku.baidu.com/link?url=kD0_XNKOoARCFEW0AB_f9wT9_A8OFS48dzR4NdPXP3xEv9MFNptEyKwMVeuI6Umo1kwfrmTHt-NX-ly369ZW3_sVSiNPLXeB0pmwAYi6e0e 


robotium如何定位控件?

search类获取当前所有的view,然后根据类型或者文本去筛选,找到view后获取座标,然后点击座标。本质都是通过座标点击。solo.clickonScreen方法,底层调用MotionEvent类。

MotionEvent,android.view中的类,Objectused to report movement (mouse, pen, finger, trackball) events

定位webview

nativedriverseleniumandroid版本,通过js脚本控制webview,在webview注入js脚本,然后调用nativedriver操作。

签名加上包名,确定唯一app

签名一致,两个app进程可以进行通信。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章