android studio下gradleRobolectric单元测试配置

1.Robolectric

Robolectric是一个基于junit之上的单元测试框架。它并不依赖于Android提供的测试功能,它使用了shadow objects并且运行测试于普通的工作站/服务器JVM,不像模拟器或设备需要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式),打包,部署和运行的过程,大大减少了测试执行的时间。

参考:安卓单元测试相关概述http://www.cnblogs.com/droidpilot/archive/2012/04/27/2473291.html

2.下载as插件

如果是android studio 0.8.9以下的版本,需要按照指示添加额外配置

https://github.com/evant/android-studio-unit-test-plugin

3.编写gradle 配置

项目地址:https://github.com/JCAndKSolutions/android-unit-test

以下是配置的详细说明

buildscript {  repositories {        mavenCentral()        maven {            url 'https://oss.sonatype.org/content/repositories/snapshots/'        }    }     dependencies {        classpath 'com.android.tools.build:gradle:0.12.+'//        classpath 'org.robolectric:robolectric-gradle-plugin:0.13.+’    //引用相关gradle插件        classpath 'com.github.jcandksolutions.gradle:android-unit-test:1.6.2'    }}apply plugin: 'android-library'apply plugin: 'idea'idea {    module {    //设置测试类的输出目录        testOutputDir = file('build/test-classes')    }}repositories {    mavenCentral()    maven {        url 'https://oss.sonatype.org/content/repositories/snapshots/'    }}//由于android studiode 一个bug,必须把module的iml文件中的android sdk引用放到最下面task pushDownJdkDependency {//这里是待测试项目的iml文件名    def imlFile = file("library.iml")    doLast {        try {            def parsedXml = (new XmlParser()).parse(imlFile)            def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }            parsedXml.component[1].remove(jdkNode)//这里是target sdk版本,只需要改数字就行            new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': "Android API 19 Platform", 'jdkType': 'Android SDK'])            def writer = new StringWriter()            new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)            imlFile.text = writer.toString()        } catch (FileNotFoundException e) {            // nop, iml not found        }    }}//在build之前修改iml文件gradle.projectsEvaluated {    preBuild.dependsOn(pushDownJdkDependency)}android {    compileSdkVersion 19    buildToolsVersion '19.1.0'    sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src/main/java']            res.srcDirs = ['res’]//指定测试文件所在目录            androidTest.setRoot('src/test')        }    }    defaultConfig {        minSdkVersion 10        targetSdkVersion 19        versionCode 2        versionName "2.0.0"        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"    }}//应用插件apply plugin: 'android-unit-test'dependencies {    compile 'com.android.support:support-v4:19.1.0’//注意,如果https://github.com/evant/android-studio-unit-test-plugin,此插件没有安装,则可能无法识别testCompile语义//junit:junit和org.robolectric:robolectric是必须项,其他的项目根据实际引用添加    testCompile 'junit:junit:4.10'    testCompile 'org.robolectric:robolectric:2.3'    testDebugCompile 'org.debugonly.dependency'    testFreeCompile 'Admob.jar'    testCompile 'org.mockito:mockito-all:1.9.5'    testCompile('com.squareup:fest-android:1.0.+') { exclude module: 'support-v4' }}

4.运行测试

直接在as的终端里面执行:gradle test 或者./gradlew test 即可

更多相关文章

  1. Windows电脑:Android Studio 连接不上设备真机测试的问题
  2. Android多媒体开发(5)————利用Android AudioTrack播放mp3文件
  3. AndroiManifest.xml文件中android属性
  4. 在Eclipse中进行Android单元测试
  5. Android 将从网络获取的数据缓存到私有文件
  6. Android程序怎么做单元测试
  7. android删除sd卡文件
  8. Android实现文件夹目录选择器

随机推荐

  1. Android安全模型
  2. Android动态添加TextView
  3. Android support和Androidx库不能共存问
  4. android————Button
  5. android点击空白区域隐藏软键盘的实现
  6. android 打开本地相册,并将选择的照片显示
  7. android 关闭软键盘
  8. Android 开发指南 翻译 User Interfaces
  9. Android drawText 纵向居中
  10. android:ImageView,访问网上图片并显示出