web-dev-qa-db-ja.com

Androidプロジェクトのgradleによるjunitテスト

私はテスト(junitとrobolectric)をAndroidプロジェクトで動作させようとしていますが、完全に立ち往生しています。私の主な問題は、gradleで見つけたすべてのテストが何らかの形でJavaプラグインを使用すると、このエラーが発生します。

The 'Java' plugin has been applied, but it is not compatible with the Android plugins.

現時点で私が見る唯一の方法は、テストプロジェクトとアプリプロジェクトに分割することですが、それは避けたいと思います。どんな例/ヒントでも大歓迎です!

公式ドキュメント では、単体テストについては言及していません-インストルメンテーションテストのみです-しかし、単体テストで結果をすばやく取得したいのです。

26
ligi

Javaプラグインは必要ありません。なぜなら、Androidは、これまで見てきたことから、ほとんど必要なものを処理してくれるからです。

この男のブログでRobolectricとjunitのテストを実行することができました: http://tryge.com/2013/02/28/Android-gradle-build/

Build.gradleファイルは次のようになります(テストファイルは{projectdir}/testディレクトリにあります)。

...
// Unit tests

sourceSets {
        unitTest {
                Java.srcDir file('test')
                resources.srcDir file('test/resources')
        }
}

dependencies {
        unitTestCompile files("$project.buildDir/classes/debug")
        unitTestCompile 'junit:junit:4.11'
        unitTestCompile 'org.robolectric:robolectric:2.1.1'
        unitTestCompile 'com.google.Android:android:4.0.1.2'
}

configurations {
        unitTestCompile.extendsFrom runtime
        unitTestRuntime.extendsFrom unitTestCompile
}

task unitTest(type:Test, dependsOn: assemble) {
        description = "run unit tests"
        testClassesDir = project.sourceSets.unitTest.output.classesDir
        classpath = project.sourceSets.unitTest.runtimeClasspath
}

build.dependsOn unitTest
27
newfivefour

AndroidStudioと新しいAndroid Gradleプラグインは、公式の単体テストサポートを提供しています。

これは、Android Studio 1.1+およびAndroid Gradleプラグインバージョン1.1.0+

依存関係をtestCompileとして宣言できるようになりました。

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}

詳細はこちら: 単体テストのサポート-Android Tools Project Site

7
unbekant

このガイドが役立つ場合があります- http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-Android-studio

テストがandroidTest dirの下にある必要がある最新のgradle

Gradle.buildでも:

dependencies {
     androidTestCompile 'junit:junit:4.+'
}

defaultConfig{

testPackageName "test.Java.foo"
testInstrumentationRunner "Android.test.InstrumentationTestRunner"

}

1
Gal Bracha

このドキュメントを使用する必要があります https://developer.Android.com/training/testing/unit-testing/local-unit-tests.html Androidデバイスではなく、開発者のマシンで実行される非計測ユニットテスト。

0
babay

これは私だけのために働いたものです:

androidTestCompile 'net.bytebuddy:byte-buddy-Android:0.7.8'
0
Karoly