整理了一份robotium使用总结文档,有兴趣的同学可以看看,有问题一块交流
学习。
注:文中图片上传失败,完整文档见附件。
1. 环境搭建
1.1 资源下载及安装
1.1.1 JDK:Jdk-6u13-windows-i586
地址:
http://svr-android/share/Android/jdk-6u13-windows-i586-p.exe,安装。
1.1.2 IDE:Eclipse:Eclipse-SDK-3.4-win32
地址:
http://svr-android/share/Android/eclipse-java-ganymede-win32.zip,解压,无需安装。
1.1.3 Eclipse插件ADT安装
在装好eclipse后,选择菜单Help>Software Updates>Available Software>Add,添加ADT路径
http://dl-ssl.google.com/android/eclipse/,选择Developer Tools,点击next即可。
1.1.4
Android sdk
地址:
http://svr-android/share/Android/,下载,解压。
1.2 环境配置
1.2.1
java环境变量配置
依次点击:“我的电脑”-(右键)“属性”-“高级”-“环境变量”,弹出
Windows的“环境变量”配置卡。
在“系统变量”栏下执行三项操作:
①新建“Java_Home”,设置其值为 JDK所在的绝对路径(例如 D:\Program Files\Java\jdk1.5.0_04)。
②新建“Classpath”(如果已有,则直接编辑),设置其值为 .;%Java_Home%\lib (若值中原来有内容,用分号与之隔开)。注意路径前的符号为.;不能漏掉
③新建“Path”(如果已有,则直接编辑),值: %Java_Home%\bin; (若值中原来有内容,用分号与之隔开)。
在命令行输入javac,显示它的用法则可以说明该环境已经配置成功。
1.2.2 andoid sdk
启动eclipse,点击window->preferences->android,在SDK Location输入SDK路径,点击Apply,就可以了。
1.3 下载robotium源码
http://code.google.com/p/robotium/downloads/list取最新源码及API说明文档。
1.4 创建工程
1)创建一个adnroid
test project。在Eclipse 里,单击 File --> New --> Project --> Android Test Project --> an existing Android project 选择要
测试的工程,选中后,project name...等等会自动填写完整--->finish。Project namet也可自己输入。
2)链接Robotium库:test工程右键-->build path-->config build path->Libraries->Add JARs->找到放库的工程路径。
2. 使用前准备
2.1识别各类控件
只说明了较常见的控件。
2.1.1 Form. widgets
以下为效果图及对应的名称:
CheckedTextView效果图如下:
2.1.2 composite
GridView:酷盾主页的九宫格就是通过gridview实现的,效果图如下:
ListView:类型黑名单列表就是通过listview实现的,整个列表时一个list,list里边的每个Item包括两个textview和一个checkbox,效果图如下:
ScrollView可以让它内部的数据显示不下的时候出现滚动条,如上图所示,当超出一屏时,出现滚动条。
2.1.3 images&media
ImageView:以下效果图里的背景就是ImageView
ImageButton效果图如下:
2.1.4 time&date
TimePicker:效果图中设置时间部分
DatePicker:效果图中设置日期部分
2.2熟悉Robotium API
熟悉robotiumAPI方法,可以先知道它支持哪些操作,方便使用。可以查看robotium的API文档。
2.3测试对象源码
能拿到源码前提下,可以先根据测试需求,查看UI对应的layout及xml下的xml文件,了解界面上控件类型及属性。
3. 问题总结
1)有些button没有string,没有text,只能通过index来click这样很不直观,而且button的index并不是固定的,有可能随着控件重新加载,顺序也有可能发生变化,无法保证测试结果。查看了robotium源码,发现大多数click方法最终都是通过传入参数转成view,再调用clickOnView,于是参照着写了一个通过button的ID来click的方法。Button的ID需要查看测试对象的源码中获取。比如导航中就有菜单栏大多数据button就是这种类型的。
2)listview动态添加item如何判断添加成功。可从添加前及添加后Item个数判断,先确定添加item的属性,再通过相应的方法获取item。比如添加一个item可能需要三个textview,那么通过getCurrentTextViews(View)前后获取到的个数差就相差三个。比如添加黑名单到黑名单列表。
3)有些EditText输入时调出输入法,但有些EditTextl输入时不会调出输入法,如果调出了输入法,需要goBack()关闭输入法才可进行下一步操作。比如
手机防盗输入密码会调出输入法,酷盾帐号登录或是注册时不会调出输入法。
4)有些控件是开发自已写的,robotium没有相应的API可用,可以使用clickOnScreen()大概预估一个x,y值,0坐标在左上角。比如备份还原中从备份界面切换到酷盾帐号界面,黑名单中进入黑名单列表。
5)点击listview中随机添加的item。随机添加的item无法得知text,则可以通过clickInList(int line)。比如黑名单列表。
6)有些界面robotium提供的滚动功能不起作用,需要找当前activity屏幕之外的button或是其他view时,可以通过solo.sendKey()发送向上、向下或是左右移动焦点找到需要点击的button或是其他view。
4. 结果判断
4.1 waitForText
该方法适用于点击操作后需要一点时间才返回结果的结果判断。比如联网操作,可以设置适当的延时,等待返回结果,判断结果更加正确。
4.2 assertActivity
该方法适用于activity时,可以判断点击操作切换Activity是否正确,可以与waitfortext配合使用。
4.3 searchText+assert
当有editText时,输入内容后,可通过searchText查找输入内容是否是预期结果,再将返回结果判断。
注:有些editText的内容无法通过searchText,原因暂时没找到。比如:手动添加黑名单时的名称及号码的输入框。
5. 执行
有两种方式,一种是通过eclipse;一种是通过命令行。
5.1 eclipse
Run as Android
JUnit Test,可以跑整个测试工程,也可以跑单个
测试用例。
5.2 命令行
adb install ****Test.apk
adb
shell am instrument testpackagename/android.test.InstrumentationTestRunner
抓取log的关键字是TestRunner。