Android 自动化测试robotium.docx

上传人:b****0 文档编号:18103682 上传时间:2023-08-13 格式:DOCX 页数:17 大小:159.37KB
下载 相关 举报
Android 自动化测试robotium.docx_第1页
第1页 / 共17页
Android 自动化测试robotium.docx_第2页
第2页 / 共17页
Android 自动化测试robotium.docx_第3页
第3页 / 共17页
Android 自动化测试robotium.docx_第4页
第4页 / 共17页
Android 自动化测试robotium.docx_第5页
第5页 / 共17页
Android 自动化测试robotium.docx_第6页
第6页 / 共17页
Android 自动化测试robotium.docx_第7页
第7页 / 共17页
Android 自动化测试robotium.docx_第8页
第8页 / 共17页
Android 自动化测试robotium.docx_第9页
第9页 / 共17页
Android 自动化测试robotium.docx_第10页
第10页 / 共17页
Android 自动化测试robotium.docx_第11页
第11页 / 共17页
Android 自动化测试robotium.docx_第12页
第12页 / 共17页
Android 自动化测试robotium.docx_第13页
第13页 / 共17页
Android 自动化测试robotium.docx_第14页
第14页 / 共17页
Android 自动化测试robotium.docx_第15页
第15页 / 共17页
Android 自动化测试robotium.docx_第16页
第16页 / 共17页
Android 自动化测试robotium.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android 自动化测试robotium.docx

《Android 自动化测试robotium.docx》由会员分享,可在线阅读,更多相关《Android 自动化测试robotium.docx(17页珍藏版)》请在冰点文库上搜索。

Android 自动化测试robotium.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2