【背景介绍】

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

一、在Android Studio中使用Robotium

1.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'

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

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

二、持续集成

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

2.1  了解gradle

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

2.2  使用gradle进行自动构建

2.2.1  gradle命令行环境配置

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

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

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

2.2.2  常用命令

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

gradle clean:删除build文件夹

gradle build:执行项目编译

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

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

gradle uninstallDebug:卸载debug版本

gradle unintstallDebugAndroidTest:卸载debug测试包

gradle uninstallAll:卸载所有包

gradle test:执行测试

2.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’表示是一个appmodule,应用了com.android.application插件。其次是基于哪个sdk版本编译和构建工具版本。defaultConfig是默认配置,如果没有其他的配置覆盖,使用这里的。看其属性的名字就可以知道其作用,比如applicationId是配置包名的,versionCode是版本号,versioanName是版本名称等。

buildTypes是构建类型,常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。dependencies定义了该module需要依赖的jar,aar,jcenter库信息。

2.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中即可实现持续集成

2.2.5     易出现问题

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

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

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

repositories {

mavenCentral()

}

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

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

LintOptions{

abortOnError false

}

android studio云测,Android studio 下的robotium自动化测试和持续集成相关推荐

  1. 兼容性自动化测试 | HUAWEI DevEco Studio云测服务等您来体验

    支持原生应用.混合应用.游戏类应用自动化兼容性测试,提供华为最新最全真机资源,多台并行测试,随时在线,协助开发者定位应用在手机上的兼容性问题. 01 兼容性测试服务流程 执行测试平均时长约10-15分 ...

  2. android 免费云测平台,免费移动App自动化云测试软件推荐-Testin(云测)

    每当我们完成一个得意的作品APP之后,肯定会立即去上传或者是推广.但是app测试是一项很重要的工作!估计大都是的app测试只是程序员几个人完成.今天,25学堂跟大家分享一个每一个人都可以参与的app自 ...

  3. android融云版本号,Android 融云IM集成方法以及解决的一些问题

    我项目的消息列表页面采用的是fragment+viewPage的方式,而官方提供的方式却是activity中的,而且我还需要在消息列表页面添加其他控件,所以我采用了fragment中套IM提供的fra ...

  4. 云效(原RDC)+ 容器服务完成持续集成

    最近在将公司的持续集成架构做一个系统的调整,调整过程中受到了RDC团队大量的帮助,所以利用国庆时间写了几篇RDC的分享,希望能让更多的人了解和用好RDC这个产品. 我会把我最近3个月的使用体会分成5个 ...

  5. android 阿里云 maven,Android SDK接入(Maven集成)

    定义Application类,编写onCreate方法,启动服务. 说明 建议将崩溃分析服务的SDK初始化代码段,放在所有业务代码之前,确保App在启动时,优先加载崩溃分析服务,保障后续崩溃的信息,可 ...

  6. windows下使用Jenkins搭建CI持续集成平台(版本源码管理使用SVN)

    首先从官网http://jenkins-ci.org/下载 Java Web Archive (.war) 例如我保存到 D:\jenkins\jenkins.war 运行Jenkins需要JRE的支 ...

  7. 华为软开云6--玩转云测

    6.玩转云测 提供一体化测试解决方案 1.如何设计.分配和执行测试用例 2.测试管理的多维度报表和基本设置的介绍 云测 CloudTest 云测(CloudTest)是面向软件开发者提供的一站式云端测 ...

  8. EasyClick 易点云测 IOS版自动化测试工具

    EasyClick 易点云测 IOS版自动化测试工具 易点云测IOS版自动化测试工具 地址:EasyClick IOS 前置条件 一台MAC 或黑苹果 xcode (推荐13.1版本)编译IPA 程序 ...

  9. android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践

    摘要: 近几年,Android系统占据着智能移动设备操作系统领域中极大的市场份额.随着Android市场中软件数量的不断攀升,移动用户对Android应用的质量要求也越来越高.如何保证Android软 ...

最新文章

  1. Linux环境下用OpenJTAG实现Linux内核的源码级调试
  2. MDK中软仿真下Debug-(printf)Viewer
  3. 两个表点击分页的时候怎么判断点的是哪一个表_百亿级数据分表后怎么分页查询?...
  4. 1087 All Roads Lead to Rome (30 分)【难度: 一般 / Dijkstra】
  5. 微信小程序wx.request中post请求时data中参数不能传到后台
  6. 【OFDM系列2】OFDM复信号符号信噪比EsN0、比特信噪比EbN0、SNR的含义及关系详解
  7. x264_macroblock_cache_load()
  8. ecshop getRow getAll getOne 返回值的区别
  9. 学子商城电子产品销售系统
  10. Latex |解决缺少.sty文件的问题和引用显示不出来的问题
  11. go “静态目录服务” http.FileServer
  12. Microsoft Excel 教程:如何在 Excel 中筛选唯一值或删除重复值?
  13. CAD快速打印(批量打印)PDF/DWF/JPG/PNG\EPS/PLT:任意尺寸、纯命令
  14. 数组:求绝对值最小的数
  15. PySide6 Widgets基本小部件类--QWidget
  16. word如何修改行间距和段落间距
  17. 大脑构造图与功能解析_大脑的结构功能及作用是怎样?
  18. 爬虫03_股票数据定向爬虫
  19. android蓝牙查看电池容量_Android获取电池电量和电池容量
  20. Python 爬虫 | 获取历史涨停数据

热门文章

  1. 我们的实践: 400万全行业动态事理图谱Demo
  2. 4 计算机组成原理第三章 存储系统 高速缓冲存储器 虚拟存储器
  3. K8s遇到问题解决思路
  4. 设置build.gradle打包时自动加时间
  5. 了解Web及网络基础——《图解http》第一章
  6. idea修改文件名后出现main method should be static错误
  7. 数据库设计器无法打开方法
  8. kendo grid输入框验证方法
  9. php后台如何避免用户直接进入方法
  10. 【剑指offer】面试题24:反转链表(Java)