Android 自动化测试robotium.docx
- 文档编号:18103682
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:17
- 大小:159.37KB
Android 自动化测试robotium.docx
《Android 自动化测试robotium.docx》由会员分享,可在线阅读,更多相关《Android 自动化测试robotium.docx(17页珍藏版)》请在冰点文库上搜索。
Android自动化测试robotium
Android自动化测试—robotium
(一)环境
Android的开发可以说已经遍地都是,不说精致的app,只要看些书,看点教学视频,学习二至三个月,都可以随便开发几个小项目,当然只能是自娱自乐的。
最近突然想起了,关于android的自动化测试,于是网上搜了相关资料学习,最后决定先尝试robotium。
robotiumwiki:
这里有篇文章对于robotium的介绍很贴切:
robotium是android自带类Instrumentation的一个封装,方便测试人员直接调用封装好的接口,也就是说,实际上我们直接使用Instrumentation也能够进行自动化测试,但robotium可以简化我们的测试步骤,我们只需要调用某个robotium的API,传几个参数,就等于我们在调用一部分的Instrumentation帮我们实现测试。
robotium就是富二代!
!
高帅富!
!
需要注意:
1.测试项目:
例如:
HelloWorldTest,BuildPath需要导入robotium-solo.jar包
2.Eclipse:
3.7版本,需要勾选OrderandExport中的内容
1.package com.luwenjie.helloworld.test;
2.
3.import android.test.ActivityInstrumentationTestCase2;
4.import com.luwenjie.helloworld.HelloWorldActivity;
5.import com.jayway.android.robotium.solo.Solo;
6.
7.public class HelloWorldTest extends ActivityInstrumentationTestCase2
8.
9.
10. private Solo solo;
11.
12.//需要测试的app是什么?
13.//这里需要测试com.luwenjie.helloworld包下的HelloWorldActivity这个应用
14.
15. public HelloWorldTest(){
16. super("com.luwenjie.helloworld", HelloWorldActivity.class);
17. }
18.
19.//打开HelloWorld这个应用
20.
21. public void setUp() throws Exception{
22. solo = new Solo(getInstrumentation(), getActivity());
23. }
24.
25.//执行测试
26.//searchText(Stringstr):
验证字符串是否存在
27.
28. public void testUI() throws Exception {
29. boolean expected = true;
30. boolean actual = solo.searchText("Hello") && solo.searchText("World");
31.
32. assertEquals("This and/or is are not found", expected, actual);
33. }
34.}
Android自动化测试—robotium
(二)初识
花了一点时间写了一个计算标准体重的小应用,当然目的是为了测试robotium的使用情况。
经过一段泡在robotium的API文档上,对一些基本操作也有所了解,开始了更进一步的尝试。
robotiumAPI:
虽然API文档已经把相关知识点解释的很全,作为学习还需不断使用理解巩固知识
以下先简单介绍一部分API
//单击一个单选按钮
clickOnRadioButton(intindex)
index:
用来标识哪个RadioButton,只有1个RadioButton,index=0以此类推
//单击一个EditText表单
clickOnEditText(intindex)
index:
用来标识哪个EditText,只有1个EditText,index=0以此类推
//在EditText中输入Text
enterText(intindex,Stringtext)
index:
用来标识哪个EditText
text:
输入的内容
//单击一个按钮
clickOnButton(Stringname)
name:
按钮的名称
//返回上一页
goBack()
//清空EditText表单
clearEditText(intindex)
index:
用来标识哪个EditText
1.package com.luwenjie.standweight.test;
2.
3.import android.test.ActivityInstrumentationTestCase2;
4.import com.luwenjie.standweight.StandWeightActivity;
5.import com.jayway.android.robotium.solo.Solo;
6.
7.public class weightText extends ActivityInstrumentationTestCase2
8. private Solo solo;
9. public weightText() {
10. super("com.luwenjie.standweight", StandWeightActivity.class);
11. }
12.
13. public void setUp() throws Exception{
14. solo = new Solo(getInstrumentation(), getActivity());
15. }
16.
17. public void testUI() throws Exception {
18. boolean expected = true;
19.
20. //验证男孩180cm的标准体重为70公斤
21. solo.clickOnRadioButton(0);
22. solo.clickOnEditText(0);
23. solo.enterText(0, "180");
24. solo.clickOnButton("计算");
25. boolean actual1 = solo.searchText("70.00");
26. assertEquals("This and/or is are not found", expected, actual1);
27.
28. //返回清空editText表单
29. solo.goBack();
30. solo.clearEditText(0);
31.
32. //验证女孩160cm的标准体重为70公斤
33. solo.clickOnRadioButton
(1);
34. solo.clickOnEditText(0);
35. solo.enterText(0, "160");
36. solo.clickOnButton("计算");
37. boolean actual2 = solo.searchText("54.00");
38. assertEquals("This and/or is are not found", expected, actual2);
39. }
40.}
Android自动化测试—robotium(三)EditText控件
为了更好的尝试Robotium的AIP,自己编写了部分android控件,提供测试。
EditText控件:
操作步骤:
1.单击EditText控件
2.输入文字内容:
ThisisEditTextActivity
3.单击Submit按钮
验证:
页面返回文字:
ThisisEditTextActivity
1.public void testUI() throws Exception {
2. this.EditText();
3.}
4.
5.public void EditText(){
6. boolean expected = true;
7. solo.clickOnButton("EditText");
8. solo.enterText(0, "This is EditTextActivity");
9. solo.clickOnButton("Submit");
10. boolean actual = solo.searchText("This is EditTextActivity");
11. assertEquals("This is not found",expected,actual);
12. solo.goBack();
13.}
assertEquals拥有三个参数
assertEquals(Stringmessage,booleanexpected,booleanactual)
message:
出错时返回的信息
expected:
预期结果,是个布尔值
actual:
实际结果,也是个布尔值
如果expected和actual的值相同时(可以都为false),测试通过,否则失败。
Android自动化测试—robotium(四)CheckBox控件
CheckBox控件:
单击CheckBox1勾选 再次单击CheckBox取消勾选
操作步骤:
1.单击CheckBox1复选框
验证:
返回提示:
CheckBox1被选中
2.再次单击CheckBox1复选框(达到取消勾选效果)
验证:
返回提示:
CheckBox1取消选中
1.public void testUI() throws Exception {
2. this.CheckBox();
3.}
4.
5.public void CheckBox(){
6. boolean expected = true;
7. solo.clickOnButton("CheckBox");
8.
9. solo.clickOnCheckBox(0);
10. boolean actual = solo.searchText("Check Box 1被选中");
11. assertEquals("This is not found",expected,actual);
12.
13. solo.clickOnCheckBox(0);
14. boolean actual2 = solo.searchText("Check Box 1取消选中");
15. assertEquals("This is not found",expected,actual2);
16. solo.goBack();
17.}
这里solo.clickOnCheckBox(0)代表第一个CheckBox元素:
CheckBox1
以此类推,1代表第二个CheckBox元素:
CheckBox2
CheckBox实现:
Android自动化测试—robotium(五)Spinner控件
Spinner控件:
默认显示:
【选择的是:
北京】
操作步骤:
1.点击【城市】下拉框
2.选择【上海】
验证:
TextView显示:
【选择的是:
上海】
1.public void testUI() throws Exception {
2. this.Spinner();
3.}
4.
5.public void Spinner(){
6. solo.clickOnButton("Spinner");
7. boolean actual = solo.isSpinnerTextSelected(0,"北京");
8.
9. solo.pressSpinnerItem(0, 1);
10. boolean actual1 = solo.searchText("选择的是:
上海");
11. assertEquals("This is not found",true, actual1);
12.}
isSpinnerTextSelected拥有两个参数
publicbooleanisSpinnerTextSelected(intindex,Stringtext)
index:
定位选择的Spinner,第一个为0
text:
所选择的Spinner存在的文本
这个API返回的是一个布尔值,当满足条件时返回true
pressSpinnerItem拥有两个参数
publicvoidpressSpinnerItem(intspinnerIndex,intitemIndex)
spinnerIndex:
定位要使用的Spinner,第一个为0
intemIndex:
定位所要按下的下拉项,如图:
北京=0上海=1天津=2....
Spinner实现:
本文出自“小毛子”博客,请务必保留此出处
Android自动化测试—robotium(六)只有APK存在
之前robotium的测试都是基于有源码的情况下。
当我们无法获得android源码时,可以采用另一种方式进行测试。
关于这种方式,robotiumwiki有相关资料提供参考RobotiumForAPKFiles:
UseRobotiumwhenonlyhavingapk
在实现整个测试过程前,先简单了解下Android应用程序签名:
Android应用程序为什么要签名?
签名的作用是什么?
签名的作用:
(1)发送者身份的认证
(2)保证输入信息的完整性
(3)防止交易中的抵赖发生
Robotium开始测试过程:
一、更换APK签名
根据robotimuwiki介绍:
需要利用一个叫re-sign.jar的工具,它可以帮助我们重新签名某个APK.
下载:
1.双击re-sign.jar或cmd下java-jarre-sign.jar
2.将应用程序拖入re-sign中,这里以“有道词典3.1.0.apk”举例
3.生成新签名和新APK。
有道词典3.1.0_dubug.apk
Packagename:
com.youdao.dict
Mainactivity:
com.youdao.dict.activity.DictSplashActivity
二、将有“有道词典3.1.0_dubug.apk”安装至android虚拟机中
1.进入android-sdk-windows\platform执行命令:
adbinstall有道词典3.1.0_dubug.apk
2.安装成功后,虚拟机将会看到此应用.
三、修改AndroidMainfest.xml文件
创建Android测试项目:
1.
xml version="1.0" encoding="utf-8"?
>
2. android=" 3. package="com.luwenjie.helloworld.test" 4. android: versionCode="1" 5. android: versionName="1.0" > 6. 7.//添加supports-screens 8. anyDensity="true"/> 9. 10. minSdkVersion="10" /> 11. 12.//修改targetPackage为之前所生产的PackageName 13. 14. android: name="android.test.InstrumentationTestRunner" 15. android: targetPackage="com.youdao.dict" /> 16. 17. 18. android: icon="@drawable/ic_launcher" 19. android: label="@string/app_name" > 20. name="android.test.runner" /> 21. 22. 23.
四、修改测试框架:
测试框架RobotiumWiki已经提供:
//TARGET_PACKAGE_ID和LAUNCHER_ACTIVITY_FULL_CLASSNAME使用工具所生成的
privatestaticfinalStringTARGET_PACKAGE_ID="com.youdao.dict"
privatestaticfinalStringLAUNCHER_ACTIVITY_FULL_CLASSNAME="com.youdao.dict.activity.DictSplashActivity"
//测试脚本,我们可以修改脚本,利用java特性,创建多个脚本文件进行调用
publicvoidtestCanOpenSettings(){
solo.enterText(0,"test");
}
五、运行脚本进行测试
Android自动化测试—robotium(七)Ant构建脚本
robotium的脚本是Java写的,就可以利用ant去构建。
当然build.xml文件同SeleniumWebDriver的build.xml也是不同的。
Ant:
可以参考robotium官方Wiki解决Robotium覆盖率的问题:
1.对于robotiumtests我们不必自己写build.xml。
参考一下命令:
androidupdatetest-project-m[pathtotargetapplication]-p[pathtothefoler]
2.需要把robotium.jar放到测试项目的libs目录中,ant将来需要去引用
3.简单使用ant进行构建.
关键在于:
自动生成的build.xml中将android自带的antbuild文件所包含进来。
这个build.xml建议详细阅读,能够学到很多东西。
因为这里default启动的是help,所以当我们直接运行ant时,将返回help内容
根据help提示,运行test就是运行测试
当然我们可以更改default为test,那样默认运行ant就是运行测试了。
Android自动化测试—robotium(八)拖拽
SeekBar控件
代码实现:
默认显示:
【HelloWorld,MyAndroidActivity】
操作:
1.点击控件(小圆点)
2.拖拽到一定位置
验证:
TextView显示:
【<拖动条>完成拖动】
1.public void Drag(){
2. boolean expected = true;
3. solo.clickOnScreen(11, 121);
4. solo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 自动化测试robotium 自动化 测试 robotium
![提示](https://static.bingdoc.com/images/bang_tan.gif)