文档章节

Android studio 下的robotium自动化测试和持续集成

百度MTC
 百度MTC
发布于 2016/02/04 15:03
字数 1122
阅读 227
收藏 8

一、前言

Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。作为官方主推的开发环境和停止对其他开发IDE的支持,Android Studio将成为今后唯一的android开发环境。本文主要介绍在Android Studio环境下的Robotium测试框架使用方法和持续集成。

二、在Android Studio中使用Robotium

2.1 基础环境配置

      先来看一下Android Studio中的工程结构,如下图所示:

Android Studio建立的工程会自带一个测试包,如图所示,androidTest即为测试包,测试用例就放在这个包内。如果项目目录内无此测试包,也可直接在src目录下创建test/java目录。创建完成后,检查build.gradle文件查看是否加入了junit4依赖,如果没有就做加入如下配置:

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:22.1.1'

    testCompile 'junit:junit:4.12'

}

2.2 引入robotium包

将robotiumd 的jar包复制到工程的libs目录下,右键点击jar包,在下拉菜单中点击如下图所示选项:

2.3 创建一个testcase并运行

在测试包内新建一个javaclass,代码内容和eclipse ADT开发模式下的robotium测试case保持一致。点选testcase类,右键后选择run,在设备列表中选择设备后即可运行case。运行过程日志可以在界面下方run页面中看到。

三、持续集成

      经过上面的配置,已经可以在Android Studio 下使用Robotium框架进行自动化测试。下面介绍持续集成。

     3.1  了解gradle

Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。也是Android Studio官方推荐的构建工具。

3.2  使用gradle进行自动构建

3.2.1     gradle命令行环境配置

下载gradle,解压到任意目录。

配置环境变量,在PATH中加入路径”$gradle安装目录/bin”,更新环境变量。

在命令行模式中运行gradle –v,如果出现版本信息,则说明配置成功。

3.2.2     常用命令

下面先介绍一下gradle的几个常用命令

gradle clean:删除build文件夹

gradle build:执行项目编译

gradle installDebug:安装debug版本包到设备

gradle intstallDebugAndroidTest:安装debug测试包到设备

gradle uninstallDebug:卸载debug版本包

gradle unintstallDebugAndroidTest:卸载debug测试包

gradle uninstallAll:卸载所有包

gradle test:执行测试

3.2.3     Build.gradle

build.gradle文件是一个构建脚本,类似于ant中的build.xml。当运行gradle命令的时候会从当前目录查找build.gradle文件来执行构建。从第一节项目目录结构图中可以看到,有两个build.gradle,和app同级的是一个顶级的build配置文件,在这里可以为所有module配置一些常用的配置。如依赖库、classpath。App目录下的为android的build.gradle文件。下面我们来看一个最简单android的build.gradle的例子。

Apply plugin: ‘com.android.application’表示是一个app module,应用了com.android.application插件。其次是基于哪个sdk版本编译和构建工具版本。defaultConfig是默认配置,如果没有其他的配置覆盖,就会使用这里的。看其属性的名字就可以知道其作用,比如applicationId是配置包名的,versionCode是版本号,versionName是版本名称等。

buildTypes是构建类型,常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。

 

dependencies定义了该module需要依赖的jar,aar,jcenter库信息。

3.2.4     使用gradle命令运行自动化测试

按照以下脚本即可执行自动化测试:

gradle clean

gradle build

gradle uninstallAll

gradle installDebug

gradle insallDebugAndroidTest

adb shell am instrument -e coverage true -e class com.example.chenlei10.myapplication.test.TestSuit -w com.example.chenlei10.myapplication.test/android.test.InstrumentationTestRunner

其中-e 后跟要运行的testsuit或者test类。-w参数后跟测试包名。

将上述命令配置到jenkins中即可实现持续集成

3.2.5     易出现问题

1)Gradle首次编译时出现jar包无法下载的问题。

将build.gradle配置修改一下,把下载依赖包的地址改成maven库,如下:

将repositories中的jcenter()改为mavenCentral()

repositories {

mavenCentral()

}

2)Lint警告导致编译无法完成

在build.gradle内android{}内加入设置

LintOptions{

abortOnError false

}

更多干货分享请关注”百度MTC学院“http://mtc.baidu.com/academy/article

© 著作权归作者所有

百度MTC
粉丝 1
博文 9
码字总数 25944
作品 0
私信 提问
Android自动化测试解决方案

现在已经有大量的Android自动化测试架构或工具可供我们使用, 其中包括:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。 另外LessPainful也提供服务来进行真实设备上...

瑾熙
2013/05/14
826
1
Robotium 5.2.1 发布,Android 集成测试框架

Robotium 5.2.1 发布,下载地址: robotium-solo-5.2.1.jar robotium-solo-5.2.1-javadoc.jar ExampleTestProject_v5.2.1.zip 新特性: Solo(Instrumentation instrumentation, Config confi......

oschina
2014/07/01
11.1K
11
2014 非常好用的开源 Android 测试工具

当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,2014 年大约占 80% 以上的市场。在开发 Android 应用的时候要进行测试,现在市场上有大量的测试工具。 本文主要是...

oschina
2014/10/15
39.3K
11
cucumber 有关链接整理

行为驱动开发之四,为自动化测试(运行Cucumber)提速:http://www.cnblogs.com/jarodzz/archive/2011/09/02/bdd4.html CUCUMBER TUTORIAL:http://www.toolsqa.com/cucumber/first-cucumbe......

智能小松鼠
2015/05/28
560
0
最棒的 5 款开源 Android/iOS 自动化工具

现今自动化测试在产品测试中占有很重要地位。实现测试的自动化有很多积极的意义,比如尽量缩短测试执行时间,关键发布阶段在更短时间保证更大的测试覆盖,产品开发阶段可靠和重复运行确保不引...

oschina
2015/10/27
7.3K
7

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部