自信,努力,坚持

Android自动化测试框架Robotium学习笔记

上一篇 / 下一篇  2011-07-06 10:47:25 / 个人分类:android


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-05/36512.htm


[日期:2011-05-26] 来源:Linux社区  作者:zhangren07

刚好前段时间也研究了一下Android自动化测试框架。感觉用起来还是比较方便的。

几点体会也一起和大家交流下,有一些内容还在慢慢学习中:

1.Java5(2004-10)开始推出了Instrumentation,这是一个可以在main之前Java虚拟机加载类时改变Java类字节码或类classpath等内容的工具,同时JDK1.6还提供了运行过程中的动态改变,如在方法执行前后加入度量时间的代码,使Java代码可度量就是一个很典型的应用。不过这需要涉及到Java字节码有较深入的理解进行字节码直接编辑改写,或者需要借助开源字节码项目如bcel,ASM或javassist等,以简化对字节码的操作。


2.Instrumentation与Btrace。Btrace是基于Instrumentation和ASM的,只要理解了Instrumentation的原理和ASM对字节码的操作原理,了解Btrace就不困难了。

3.Android的测试框架robotium框架,使用的类也是Instrumentation,其原理应该也类似。为某工程新建了一个测试工程,在安装原有工程项目时,也将测试的工程项目安装到AVD(模拟器)上面,同时通过测试的工程项目来与运行时的项目交互,触发其组件的动作等。这种方法的缺点是要求两个项目同时安装到AVD上面。Google将会考虑采取Remote Control的方式实现自动化测试框架,类似于selenium的Remote Control,即在AVD上运行一个监控程序,而测试项目只需要连接这个监控程序,并发送相应的指令即可与程序进行交互,进行测试。希望早日实现这种方式~,目前的自动化测试使用前种方法也可。Robotium其底层仍是采用Android的Instrumentation!

4.Android的Instrumentation对某个监控程序进行交互时,其大致采用如下步骤:

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

2)执行测试时(可用adb命令触发),将启动目标应用的Activity,同时将待测试ActivityThread作为一个引用进行初始化,如果找不到目标应用则会报错

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

整个初始化过程还有待研究,关键应该是在于AndroidManifest.xml文件中内容的标识




TAG:

迷茫 引用 删除 voilete   /   2013-07-11 11:14:10
支持,转码下就可以了。
原帖由zcxnl88于2012-04-23 20:02:01发表
请问下楼主,clickOnText可以支持中文么?
引用 删除 zcxnl88   /   2012-04-23 20:02:01
请问下楼主,clickOnText可以支持中文么?
天边飞的个人空间 引用 删除 天边飞   /   2011-07-06 16:19:07
给大家推荐一款打折优惠券软件可根据您所处的位置自动为您推荐附近的打折信息 Android版的:http://doumiw.com/market/software!getSW.action?swId=2638
 

评分:0

我来说两句

Open Toolbar