robotium android,android自动化测试框架robotium配置和使用

robotium android,android自动化测试框架robotium配置和使用背景介绍android开发过程中,每次迭代升级都需要去回归一下之前版本功能,看看最新的修改有没有影响到之前的正常功能。然而这个过程永远都是在做一些繁琐的重复的操作,大大浪费人力,所以我们决定使用自动化来做这个事情,这就引入了我们接下来要介绍的自动化测试框架——robotium。Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟…

大家好,又见面了,我是你们的朋友全栈君。

背景介绍

android开发过程中,每次迭代升级都需要去回归一下之前版本功能,看看最新的修改有没有影响到之前的正常功能。然而这个过程永远都是在做一些繁琐的重复的操作,大大浪费人力,所以我们决定使用自动化来做这个事情,这就引入了我们接下来要介绍的自动化测试框架——robotium。

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。

配置robotium

robotium配置起来也很方面。首先在build.gradle中添加依赖

compile ‘com.jayway.android.robotium:robotium-solo:5.6.0’

然后需要在测试工程中的AndroidManifest.xml中做如下的配置

package=”xxxx.test”>

android:targetPackage=”xxx”

android:name=”android.test.InstrumentationTestRunner”

/>

上面的package=”xxxx.test”是我们测试包的名称,下面定义的instrumentation中的tartPackage=”xxx”是我们被测试工程的包名称,这个配置很关键,出问题的话很容易出现找不到被测试包的错误。以上就是简单的配置了,接下来就可以开始写测试代码了。

Quick Start Guide

在测试包下面创建一个测试类,命名规范为XxxTest,该类继承ActivityInstrumentationTestCase2,构造方法中需要传入app的启动activity。代码如下:

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = “xxxx.LuancherActivity”;

private static Class> launcherActivityClass;

static{

//通过反射的方式获取的

try {

DebugUtil.debug(TAG, “启动类”+LAUNCHER_ACTIVITY_FULL_CLASSNAME);

launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

} catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

public XxxTest() throws ClassNotFoundException {

super(launcherActivityClass);

}

以上就设置好了启动的activity,然后需要重载两个方法

public void setUp() throws Exception;

public void tearDown() throws Exception;

setUp()做一些启动测试前的准备工作,如创建Solo实例,启动activity等

@Override

public void setUp() throws Exception {

super.setUp();

//创建Solo实例

solo = new Solo(getInstrumentation());

//启动activity

getActivity();

}

tearDown()中测试做一些善后的工作,如结束activity等

@Override

public void tearDown() throws Exception {

solo.finishOpenedActivities();

super.tearDown();

}

上述工作准备好之后,剩下的就是我们的测试主体方法了。方法格式如下:

public void testXxxx() {

}

注意测试方法必须按照如上格式,否则框架无法识别测试方法,也就无法运行了。这种形式的方法在一个类中是可以定义多个的。在setUp()中我们定义了一个Solo实例,这个实例到底有什么用呢?接下来稍微讲一些Solo类的用法,如果里面有的功能无法满足你的需求,可以自行去查看api文档。

Solo类用法

点击控件

solo.clickOnView(solo.getView(???));

获取控件

solo.getView()

d14bafeffc19

获取控件api

参数说明:

int id:直接调用R.id.xxx

int index:表示该控件是该页面的第几个同id控件。

Object tag:控件的tag属性

String id:xml中定义的id属性

点击按钮(可通过点击控件实现)

solo.clickOnButton()

d14bafeffc19

点击按钮

参数说明:

int index:该页面的第几个按钮

String text:按钮上的文字

验证toast文字

d14bafeffc19

验证toast

toast的本质就是一个TextView,通过上述代码即可验证toast中显示的文本。

在输入框输入文本

d14bafeffc19

输入文本

参数说明:

第一种方法获取editText可以通过2中的方法获取,text即为待输入文本。

第二种方法中index为该页面上的第几个输入框。

等待对话框关闭和打开

d14bafeffc19

对话框

参数说明:

long timeout:设置超时时间,单位为毫秒

验证activity的加载

d14bafeffc19

验证activity加载

参数说明:

String:直接传入activity名称字符串即可。

int:超时事件,默认为20000,单位为毫秒

Class extends Activity>:直接传入activity实例

获取网页元素

d14bafeffc19

获取网页元素

主要说明一下By类的用法

By.id(String) 元素的id

By.xpath(String) 元素的节点路径

By.cssSelector(String) 元素的css selector

By.name(String) 元素的name属性

By.className(String) 元素的class属性

By.textContent(String) 元素的textContent属性

By.tagName(String) 元素的tag属性

网页元素输入文本

d14bafeffc19

网页元素输入enter

d14bafeffc19

网页元素输入type

type和enter的区别在于type输入时,相当于在输入完后直接键入了一个回车,而enter没有。

点击网页元素

d14bafeffc19

点击网页元素

int match表示当有多个匹配时取哪一个,默认为0

boolean srcoll 表示是否要滑动,默认为true

验证网页元素是否加载成功

d14bafeffc19

验证网页元素是否加载成功

int miniumumNumberOfMatch 表示至少要找到多少个

int timeout 超时,单位为毫秒

boolean scroll 是否滑动

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160113.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java判断List是否为空

    Java判断List是否为空在Java中,我们常用List来存储数据,但是我们怎么判断它是否成功带来了我们需要的数据呢,以ArrayList为例,老规矩,先说结论,建议(list!=null&&!list.isEmpty);接下来是正文:20190723,这鬼天气又闷又热.远在1.99公里外的同事问了我一个问题,,一瞬间,我留下了激动的泪水.日日划水的我终于被发现了一丝价值.真是美好的一天啊….

    2025年8月25日
    1
  • Prophet 初学笔记[通俗易懂]

    Prophet 初学笔记[通俗易懂]本文介绍Prophet模型的简单调用。

    2022年6月19日
    55
  • 查看 android打包证书签名

    查看 android打包证书签名查看android打包证书签名用javakeytool查看证书签名keytool-list-v-keystore证书路径输入证书密码之后会看到MD5\SHA1\SHA256签名。这里插一句题外话,有的平台需要的也是签名例如微信系列的直接把签名大写改成小写去掉冒号即可。…

    2022年6月7日
    34
  • Java面向对象三大特性(封装、继承、多态)

    Java面向对象三大特性(封装、继承、多态)文章目录前言一、封装1.封装的概念2.private实现封装3.getter和setter方法4.封装的好处二、继承1.extends实现继承2.super关键字三,多态总结前言OOP语言:也就是面向对象编程。面向对象的语言有三大特性:封装、继承、多态。三大特性是面向对象编程的核心。下面就来介绍一下面向对象的三大特性。如果想了解面向对象可以看一下这一篇博客类和对象一、封装1.封装的概念在我们写代码的时候经常会涉及两种角色:类的实现者和类的调用者封装的本质就是让类的调用者不必太多的.

    2022年7月25日
    12
  • 反三角函数求解matlab,关於反三角函数atan2的使用 使用Matlab计算反三角函数atan2…[通俗易懂]

    三角函数中atan2是如何计算的atan2(y,x)返回的是弧度值,两者如果相同则是0.785……,既45度我想问的atan2(y,x)是表示X-Y平面上所对应的(x,y)坐标的角度,它的值域范围是(-π,π)用数学表示就是:atan2(y,x)=arg(y/x)-π当y0时,其值为正.当两者相同时,即y=x,则其角度就是π/4,即45度。使用Matlab计算反三角函数atan2各位好…

    2022年4月7日
    121
  • 基于51单片机的步进电机的控制

    基于51单片机的步进电机的控制前面笔者分享过基于51单片机的两种小车制作,我们利用的是L298N驱动控制电机转动,那么接下来,笔者给大家介绍两种利用51单片机控制步进电机的小程序。首先我们要如何使电机转动呢,源程序如下:#include<reg52.h>unsignedcharcodeF_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格,换算成二进制00…

    2022年5月31日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号