web-dev-qa-db-fra.com

test junit avec gradle pour un projet Android

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. 

25
ligi

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
27
newfivefour

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 .

7
unbekant

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"

}

1
Gal Bracha

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.

0
babay

C'est ce qui n'a fonctionné que pour moi:

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