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


    一、前言

    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

  • 相关阅读:
    vue-cli构建的项目手动添加eslint配置
    给通过canvas生成的二维码添加logo
    webpack打包时候去掉console.log配置
    gist.github.com 被墙无法访问解决办法
    axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案
    linux 系统的7个运行级别
    今天遇到了不能创建mysql函数
    今天测试大商创,遇到了 upstream sent too big header while reading response header from upstream
    mysql5.7 datetime 默认值为‘0000-00-00 00:00:00'值无法创建问题解决
    IE浏览器中判断IE版本
  • 原文地址:https://www.cnblogs.com/baidumtc/p/5181648.html
Copyright © 2020-2023  润新知