J'essaie de faire fonctionner des tests (junit et robolectric) dans un projet Android, mais je suis totalement bloqué. Mon principal problème est que tous les tests que j'ai trouvés avec gradle tirent en quelque sorte dans le plugin Java et puis j'obtiens cette erreur:
The 'Java' plugin has been applied, but it is not compatible with the Android plugins.
La seule solution que je vois pour le moment est de se scinder en test et en projet d'application, mais je voudrais éviter cela. Tous les exemples/conseils seraient très appréciés!
Dans la documentation officielle il n'est pas fait mention de tests unitaires - seulement des tests d'instrumentation - mais je veux que les tests unitaires obtiennent des résultats rapides.
Vous n'avez pas besoin du plugin Java, car Android s'occupera principalement de ce dont vous avez besoin, d'après ce que j'ai vu jusqu'à présent.
J'ai réussi à faire fonctionner mes tests Robolectric et Junit via le blog de cet homme: http://tryge.com/2013/02/28/Android-gradle-build/
Mon fichier build.gradle ressemble à ceci (où se trouvent mes fichiers de test dans le répertoire {rép_projet}/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
AndroidStudio et le nouveau plugin Android Gradle offrent maintenant un support officiel pour les tests unitaires.
Ceci est supporté depuis Android Studio 1.1+ et le plugin Android Gradle version 1.1.0+
Les dépendances peuvent maintenant être déclarées comme testCompile:
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
}
Plus de détails ici: Support des tests unitaires - Android Tools Project Site .
Ce guide pourrait vous aider - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-Android-studio
Dernier niveau le test doit être sous androidTest dir
Aussi dans votre gradle.build:
dependencies {
androidTestCompile 'junit:junit:4.+'
}
ajoutez également ceux sous defaultConfig {
testPackageName "test.Java.foo"
testInstrumentationRunner "Android.test.InstrumentationTestRunner"
}
Vous devez utiliser ce document https://developer.Android.com/training/testing/unit-testing/local-unit-tests.html .__ Il décrit les tests unitaires sans instrumentation exécutés développeur machine, pas sur le périphérique Android.
C'est ce qui n'a fonctionné que pour moi:
androidTestCompile 'net.bytebuddy:byte-buddy-Android:0.7.8'