gradle android build systemでjacoco
参考: 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"
}