gradle android build systemでjacoco

2014-07-01T00:00:00+00:00 Android gradle

参考: http://ksoichiro.blogspot.jp/2014/05/androidgradle-jacoco.html

gradle-android-plugin辺りで0.9.x辺りからサポートされてた気がするけどやってなかったのでやってみた

app/build.gradle

apply plugin: "android"

android {
    compileSdkVersion 19
    buildToolsVersion "19.1"

    buildTypes {
        debug {
            testCoverageEnabled = true
        }
    }

    jacoco {
        // バージョンはhttp://search.maven.orgとかでjacocoで検索して調べれば良い
        version = "0.7.1.201405082137"
    }
}

終わり。testCoverageEnabled = trueにしてjacocoのバージョンを設定すりゃ良いだけ。あとはテストを実行するとbuild/outputs/reports/coverage辺りにカバレッジ測定結果が出力されている

余談: robolectricによるgradle-android-test-pluginの現状に関して

色々と変わったみたい

  • gradle-android-test-pluginからrobolectric-gradle-pluginに名称が変更
  • プラグイン名がandroid-testからrobolectricに変更
  • androidTestコンフィグレーション?がrobolectricに変更(但し依存性の指定は変わらない)
  • 以前書いた時はrobolectric-2.3-SNAPSHOTを使ってたけど、2.3の公式が出てるのでそれを使う

以上。っていうのを踏まえると

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:0.11.+"
        // gradle-android-test-pluginからrobolectric-gradle-pluginに修正
        classpath "org.robolectric:robolectric-gradle-plugin:0.11.+"
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

がプロジェクトルートなbuild.gradleでapp/build.gradleで

apply plugin: "android"
// android-testからrobolectricに修正
apply plugin: "robolectric"

dependencies {
    compile project(":libraries:sample_library")
    compile "com.actionbarsherlock:actionbarsherlock:4.4.0@aar"

    androidTestCompile files("lib/espresso-1.1-bundled.jar")

    testCompile("junit:junit:4.11") {
        exclude module: "hamcrest-core"
    }

    // robolectric2.3正式版を使うように修正
    testCompile("org.robolectric:robolectric:2.3") {
        exclude module: "classworlds"
        exclude module: "maven-artifact"
        exclude module: "maven-artifact-manager"
        exclude module: "maven-error-diagnostics"
        exclude module: "maven-model"
        exclude module: "maven-plugin-registry"
        exclude module: "maven-profile"
        exclude module: "maven-project"
        exclude module: "maven-settings"
        exclude module: "nekohtml"
        exclude module: "plexus-container-default"
        exclude module: "plexus-interpolation"
        exclude module: "plexus-utils"
        exclude module: "wagon-file"
        exclude module: "wagon-http-lightweight"
        exclude module: "wagon-http-shared"
        exclude module: "wagon-provider-api"
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.1"

    buildTypes {
        debug {
            testCoverageEnabled = true
        }
    }

    jacoco {
        version = "0.7.1.201405082137"
    }


    packagingOptions {
        exclude "LICENSE.txt"
        exclude "META-INF/LICENSE"
        exclude "META-INF/LICENSE.txt"
        exclude "META-INF/NOTICE"
    }

    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
}

// androidTestからrobolectricに修正
robolectric {
    include "**/*Test.class"
    exclude "**/espresso/*.class"
}

angular.jsでng-initのような式評価を使う スクロールによるページング処理に関して