Android studio下gradle Robolectric單元測試配置

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   os   使用   ar   

android studio下gradle Robolectric單元測試配置

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 即可

Android studio下gradle Robolectric單元測試配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.