Junit тестирование с помощью gradle для проекта Android
Я пытаюсь получить тесты (junit и robolectric), работающие в Android-проекте, но я полностью застрял. Моя основная проблема заключается в том, что все тесты, которые я нашел с помощью gradle, каким-то образом втягиваются в java-плагин, а затем я получаю эту ошибку:
The 'java' plugin has been applied, but it is not compatible with the Android plugins.
Единственный выход, который я вижу на данный момент, - это разделить на тест и проект приложения, но я бы хотел этого избежать. Любые примеры/подсказки будут высоко оценены!
В официальная документация нет упоминания об модульном тестировании - только Instrumentation-Tests - но я хочу, чтобы модульные тесты быстро получали результаты,
Ответы
Ответ 1
Вам не нужен плагин 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
Ответ 2
AndroidStudio и новый плагин Android Gradle теперь предлагают официальную поддержку unit test.
Это поддерживается версиями Android 1.1 + и Android Gradle версии 1.1.0 +
Зависимости теперь могут быть объявлены как testCompile:
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
}
Подробнее здесь: Поддержка тестирования модулей - Сайт проекта Android Tools.
Ответ 3
Это руководство может помочь -
http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio
Последний gradle тест должен находиться в директории androidTest
Также в вашем gradle.build:
dependencies {
androidTestCompile 'junit:junit:4.+'
}
также добавьте те из defaultConfig {
testPackageName "test.java.foo"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
Ответ 4
Вы должны использовать этот документ
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html
В нем описываются тесты без инструментария, которые запускаются на машине разработчика, а не на устройстве Android.
Ответ 5
Это то, что сработало только для меня:
androidTestCompile 'net.bytebuddy:byte-buddy-android:0.7.8'