Robolectricなテストプロジェクトをgradleで動かす
但し、android用のgradle pluginだとかrobolectricなgradle pluginはある模様だけどそれを使わずに素のbuild.gradleだけでごちゃごちゃとやってみた
構造的には
├── app │ ├── AndroidManifest.xml │ ├── assets │ ├── bin │ ├── build.xml │ ├── gen │ ├── libs │ ├── local.properties │ ├── proguard-project.txt │ ├── project.properties │ ├── res │ ├── src │ └── test └── test ├── bin └── lib
な感じになっているのでテストプロジェクト側にbuild.gradleを作ってgradle testだけで実行できるように。無論、アプリプロジェクトがビルドされてR.java生成されてないと名前解決でエラーになるので(ry
apply plugin: "java"
repositories {
mavenCentral()
}
dependencies {
// テストするAndroidのバージョンによっては変える
compile files("/opt/android/platforms/android-8/android.jar")
compile fileTree(dir: "../app/libs", include: "*.jar")
testCompile "junit:junit:4.10"
testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile "org.mockito:mockito-all:1.9.5"
testCompile "org.powermock:powermock-mockito-release-full:1.5.1"
testCompile "org.robolectric:robolectric:2.2"
}
sourceSets {
main {
java {
srcDir "../app/src"
srcDir "../app/gen"
}
}
test {
java {
srcDir "../app/test"
}
}
}
// そのまま動かすと「superClassName is empty」で出るので
test {
scanForTestClasses = false
include "**/*TestCase.class"
}
まぁ要件によってやり方変わってくるだろうし。普通にrobolectricなgradle pluginがあるらしいのでそれ使えば良いんじゃねーのって事で
追記
gradle-android-test-pluginを使いましょう。一応記事自体は残しておきます