一、简介

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

二、相关下载

源码获取:http://code.google.com/p/robotium/

源API文档:http://robotium.googlecode.com/svn/doc/index.html

robotium5.1下载和最新API文档:http://pan.baidu.com/s/1bnlO8MF

官方例子记事本:http://pan.baidu.com/s/1qWLVL72

重签名工具:http://pan.baidu.com/s/1i3H0tKD

三、常用语法

1.等待timeout毫秒一个名字为name的Activity启动: waitForActivity(String name, int timeout)
实例:assertTrue("无法启动启动类", solo.waitForActivity ("MainActivity", 30000));2.Robotium将睡眠设置的毫秒数:sleep(int time)
实例:solo.sleep(5000)3.清空EditText的内容:clearEditText(android.widget.EditText editText)
实例:solo.clearEditText((EditText)solo.getView ("edtInsertName"))4.根据按钮上的文字点击按钮:clickOnButton(String text)
实例:solo.clickOnButton("^绿色$");5.根据文字点击控件:clickOnText(String text)
实例:solo.clickOnText("控件上显示文字");6.输入内容:enterText(android.widget.EditText editText, String text)
solo.enterText((EditText)solo.getView("edtInsertName"), "说些什么好呢?");7.返回:goBack()8.截屏并保存为设置的名字:takeScreenshot(String name)
默认保存在: /sdcard/Robotium-Screenshots/9.解锁屏幕:unlockScreen()

四、实战-针对APK进行的测试

被测试项目为demo1,下面是实战的具体步骤

1. 配置ANDROID_HOME为android sdk的安卓目录,例如:D:\android-sdk

2. 在path下添加这两个:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

3. 需要把APK重新签名,因为robotium要求被测应用和测试代码要有一致的签名, 所以我们需要把下载到的apk,通过re-sign.jar来产生debug key的apk,这个重新生成的apk就会跟测试项目签名一致了

4. 下载完后,需要配置ANDROID_HOME,就是安卓SDK的位置,然后把APK拉到图标上,就会自动生成一个debug key的apk,如果无法直接单击re-sign.jar运行,需要切换到放置该jar文件的目录,cmd执行java -jar re-sign.jar产生新apk的过程中会弹出一个信息框,记得截下图,因为里面有两个信息我们等会的代码中需要用到

5. 安装产生的apk。然后打开模拟器(模拟器器一定要打开才能安装成功),然后打开命令行  adb install mitalk_debug.apk(新生成apk的名称) , 或者双击apk文件也可以安装

安装成功就可以再模拟器里看到该应用的图标了

6. 打开Eclipse,点击File->New一个Android Test Project  TestDemo1, 然后点击下一步的时候选择This project(因为我们测试的是APK),然后选择要在哪个android版本上测试

7. 在该项目下创建一个包,com.example.demo1.test,在该包下创建TestDemo1Apk类,如下

package com.example.demo1.test;import com.robotium.solo.Solo;import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;@SuppressWarnings("rawtypes")
public class TestDemo1Apk extends ActivityInstrumentationTestCase2 {private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.example.demo1.MainActivity";//启动类private static Class<?> launcherActivityClass;static{try {launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}@SuppressWarnings("unchecked")public TestDemo1Apk() throws ClassNotFoundException {super(launcherActivityClass);}private Solo solo;@Overrideprotected void setUp() throws Exception {solo = new Solo(getInstrumentation(), getActivity());}public void testcase001() throws Exception {//等待  Activity "MainActivity" 启动assertTrue("无法启动启动类", solo.waitForActivity("MainActivity", 30000));solo.sleep(5000);//输入文字:"131243"solo.enterText((EditText)solo.getView("edtInsertName"), "说些什么好呢?");solo.sleep(2000);//清空输入框的内容solo.clearEditText((EditText)solo.getView("edtInsertName"));//按下 按钮 "绿色"solo.clickOnButton("^绿色$");solo.sleep(2000);//按下 按钮 "黄色"solo.clickOnButton("^黄色$");solo.sleep(2000);//按下 按钮 "蓝色"solo.clickOnButton("^蓝色$");solo.sleep(2000);//按下 TextView "看我变变变~~~"solo.clickOnText("^看我变变变~~~$");solo.sleep(5000);      }@Overridepublic void tearDown() throws Exception {solo.finishOpenedActivities();}}

 

8.右键该项目,选择property然后选择java build path, 选择 Add JARs,选择下到的robotium.jar

Add Library,点击Junit,选择Junit4

9.在跑测试用例之前,还需要修改下AndroidManifest.xml文件的android:targetPackage为被测应用的根的包名

    <instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="com.example.demo1" />

10.最后: run as android junit test,就可以进行测试了  

源码下载:http://pan.baidu.com/s/1ybPUI

五、实战-针对工作目录下的项目

被测试项目为demo1,下面是实战的具体步骤

1.新建一个测试项目名为demo1Test

Eclipse-File-Project-Android Test Project

测试项目名为demo1Test,测试目标项目选择demo1 

   

2.添加必要类库,robotium和junit

(1)在项目中新建lib目录,把robotium-solo-5.1.jar和robotium-solo-5.1-javadoc.jar拉进该目录。

(2)添加junit4

3.添加robotium

4.创建测试用例

右键点击包-New-JUnit Test Case

最基础的测试用例框架类

package com.example.demo1.test;import com.example.demo1.MainActivity;//导入目标项目的启动类
import android.test.ActivityInstrumentationTestCase2;
import com.robotium.solo.Solo;public class TestDemo1 extends ActivityInstrumentationTestCase2<MainActivity>{//继承目标项目的启动类private Solo solo;//初始化一个solo对象public TestDemo1() {//在构造函数处标明继承自目标项目的启动类super(MainActivity.class);}@Overridepublic void setUp() throws Exception {//在测试开始之前会调用这个方法,这里来创建一个Solo对象solo = new Solo(getInstrumentation(), getActivity());}@Overridepublic void tearDown() throws Exception {//一个测试用例结束的时候会调用这个方法solo.finishOpenedActivities();//这个方法将结束掉所有在测试执行过程中打开的activity}}

在基础测试类里面添加相关的测试方法,也就是真正在执行的测试用例

package com.example.demo1.test;import com.example.demo1.MainActivity;//导入目标项目的启动类
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;import com.robotium.solo.Solo;public class TestDemo1 extends ActivityInstrumentationTestCase2<MainActivity>{//继承目标项目的启动类private Solo solo;//初始化一个solo对象public TestDemo1() {//在构造函数处标明继承自目标项目的启动类super(MainActivity.class);}@Overridepublic void setUp() throws Exception {//在测试开始之前会调用这个方法,这里来创建一个Solo对象solo = new Solo(getInstrumentation(), getActivity());}public void testcase001() throws Exception {//等待  Activity "MainActivity" 启动assertTrue("无法启动启动类", solo.waitForActivity("MainActivity", 30000));solo.sleep(5000);//输入文字:"131243"solo.enterText((EditText)solo.getView("edtInsertName"), "说些什么好呢?");solo.sleep(2000);//清空输入框的内容solo.clearEditText((EditText)solo.getView("edtInsertName"));//按下 按钮 "绿色"solo.clickOnButton("^绿色$");solo.sleep(2000);//按下 按钮 "黄色"solo.clickOnButton("^黄色$");solo.sleep(2000);//按下 按钮 "蓝色"solo.clickOnButton("^蓝色$");solo.sleep(2000);//按下 TextView "看我变变变~~~"solo.clickOnText("^看我变变变~~~$");solo.sleep(5000);      }@Overridepublic void tearDown() throws Exception {//一个测试用例结束的时候会调用这个方法solo.finishOpenedActivities();//这个方法将结束掉所有在测试执行过程中打开的activity}}

源码共享:http://pan.baidu.com/s/1mgKcgju

六、一些特殊设置的说明

1.添加到库内需要先新建Lib目录,再把robotium-solo-5.2.1.jar放到里面,这样移动项目就不会找不到

2.测试项目的AndroidManifest.xml里面    <uses-sdk android:minSdkVersion="10" />需要在8以上,而且要跟被测试的项目一样大

3.需要勾选

4.最细节的就是:构造方法必须是无参数的,新建的测试用例一般都是有参数的:

public TestHelloWorldCase() {
super(HerlloActivity.class);
}

5.测试APK的时候需要重签名,然后再安装进去,才可以正常测试

6.如何配置Robotium的帮助提示

右键点击项目-Build Path-configure Build Path

7.robotium不同版本的方法不同

robotium的getCurrentListViews
1.版本3.6版本和4.1以上版本的表达方式

3.6版本:ArrayList<ListView> lw = solo.getCurrentListViews();

4.1版本以上:ArrayList<ListView> lw = solo.getCurrentViews(ListView.class);

还有如:

ArrayList<ImageView> imageList=solo.getCurrentViews(ImageView.class);得到的即是ImageView
ArrayList<ImageView> imageList=solo.getCurrentViews(ImageView.class,parentView);

8.如何获取控件ID-两种方法

(1)Android 实用工具Hierarchy Viewer实战

  • 是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat
  • 需要运行测试项目,在调试环境下才可以检测到模拟器的

(2)运行命令行记录log,然后点击对应Activity,接着可以在logcat看到

转载于:https://www.cnblogs.com/ITGirl00/p/4337541.html

Robotium自动化测试框架实用教程(图)相关推荐

  1. 第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)

    使用教程 一.配置 1.环境配置 2.框架配置 3.启动入口 二.用例编写 1.用例模板 2.参数依赖写法 2.函数(方法插件)写法 3.接口上传文件和表单参数 4.接口上传json参数 5.接口无数 ...

  2. 自动化测试框架RobotFrameWork教程03 RF基础关键字

    RF基础关键字 今天这个教程讲一下RF的基础关键字让我们对RF的脚本书写有初步的了解 robot framework的基础关键字封装Builtin库中,它里面包含了最基础的一些关键字. 例如:打印.定 ...

  3. python接口自动化测试框架unittest代码_Python+unittest+requests 接口自动化测试框架搭建教程...

    | | | | HEADING | | +----------------+ | | | | | | +----------------+ | | | | REPORT | | +---------- ...

  4. Python基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

    转载地址:https://www.cnblogs.com/clarke/p/5752527.html 1.写在前面 抛转引玉,仅供参考 2.开发环境 win7 64位 JetBrains PyChar ...

  5. 【腾讯TMQ】移动APP自动化测试框架对比

    赵丽娜 简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的"变", 变化导致自动化用例的大量维护. 从分层测试的角度,自动化测试应该逐层进行. 最大量实现自动化 ...

  6. 开源手机自动化测试框架iQuery入门教程(一)

    上次介绍iQuery之后,已经有些朋友在开始在手机自动化测试程序里试用iQuery了,由于之前的介绍文档比较含糊,先搁置扩展iQuery使其支持多种编程语言的系列文章,补充一下iQuery的入门教程, ...

  7. Java自动化测试框架-01 - TestNG之入门篇 - (详细教程)

    TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...

  8. android ui自动化测试框架有哪些,自动化测试框架对比(UIAutomator、Appium、Robotium)...

    一.原理 1.UiAutomator--基于UIAutomation的用户界面自动化测试框架,可以跨应用工作,谷歌亲生的. Android4.3之前:使用inputManager或者更早的Window ...

  9. 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...

    课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...

最新文章

  1. Android通用开发笔记和高性能安卓开发框架源码
  2. JUC多线程:AQS抽象队列同步器原理
  3. marquee文字起始位置_PS修图改字无痕扫描件复印件截图文字英文日期修改:制作漂亮红色丝绸文字图片的PS教程...
  4. G代码 机器人的CNC实现
  5. s6730堆叠_不再只是堆叠硬件 ivvi S6全方位评测
  6. hdoj1102 Constructing Roads(Prime || Kruskal)
  7. Android 自动接听 adb,GitHub - AndroidMsky/RootPlay: 安卓手机秒变网络摄像头,自动接起QQ视频。欢迎star,fork,Issues。...
  8. 参考手册资源 百度云
  9. ppt变成了图片不能编辑文字怎么办_解决PPT字体缺失这个问题,这个技巧你一定要掌握...
  10. mir2的db数据库
  11. 8G的U盘变成4M解决方法
  12. 微信电脑版多用户登录
  13. three.js加载3D模型,在网页上展示3D模型(.glb.gltf.fbx格式)
  14. (亲测)1分钟破解IDM权限,傻瓜都能学会的破解方法(番外篇:利用破解工具直接破解IDM)...
  15. 牛逼的js--就是d3.js
  16. MFC详解显示BMP格式图片
  17. AD硬件电路模块设计——看门狗电路
  18. 金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用
  19. 基于51单片机的温室大棚环境检测系统
  20. 7个秘诀,带你由数据分析师成长为数据科学家

热门文章

  1. 使用cx_freeze打包Python程序
  2. Velocity模板(VM)语言介绍
  3. IT-标准化-系列-14.用-博客三剑客-写博客
  4. 【数据挖掘知识点四】参数估计
  5. sklearn快速入门教程:(四)模型自动调参
  6. Element-UI 的基本使用||基于图形化界面自动安装
  7. 组件间数据交互||父组件向子组件传值-基本使用|| 父组件向子组件传值-props属性名规则
  8. mysql常用语句整理
  9. Git 技术篇 - GitHub克隆私有仓库方法,新主机绑定并同步github私有库实例演示
  10. css知识点笔记-常用属性