test junit avec gradle pour un projet android

J'essaie d'obtenir des tests (junit et robolectric) fonctionnant 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 ensuite j'obtiens cette erreur:

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

La seule issue que je vois pour le moment est de diviser en test et projet d'application - mais je voudrais éviter cela. Tous les exemples / astuces seraient très appréciés!

Dans la documentation officielle Il n'y a aucune mention de tests unitaires uniquement Instrumentation-Tests - mais je veux des tests unitaires pour obtenir des résultats rapidement.

24
demandé sur Vadim Kotov 2013-06-20 14:03:27

5 réponses

Vous n'avez pas besoin du plugin Java, puisque L'Android prendra soin de ce dont vous avez besoin principalement, d'après ce que j'ai vu jusqu'à présent.

J'ai réussi à faire exécuter mes tests Robolectric et junit via le blog de cet homme: http://tryge.com/2013/02/28/android-gradle-build/

MA construction.le fichier gradle ressemble à ceci (où mes fichiers de test sont dans le répertoire {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
répondu newfivefour 2013-07-02 16:49:09

AndroidStudio et le nouveau plugin Android Gradle offrent maintenant un support de test unitaire officiel.

Ceci est pris en charge par Android Studio 1.1+ et Android Gradle plugin 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-site du projet Android Tools .

7
répondu unbekant 2015-09-11 16:20:58

Ce guide pourrait vous aider - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

Dernière gradle le test devrait être sous androidTest dir

Aussi dans votre gradle.construire:

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

Ajoutez également ceux sous defaultConfig {

testPackageName "test.java.foo"
testInstrumentationRunner "android.test.InstrumentationTestRunner"

}

1
répondu Gal Bracha 2014-11-18 03:16:06

C'est ce qui a fonctionné pour moi seule:

androidTestCompile 'net.bytebuddy:byte-buddy-android:0.7.8'
0
répondu Karoly 2016-03-27 16:00:10

Vous devriez utiliser ce document https://developer.android.com/training/testing/unit-testing/local-unit-tests.html Il décrit les tests unitaires non instrumentaux qui s'exécutent sur une machine de développement, pas sur un appareil android.

0
répondu babay 2017-07-18 09:45:00