2016-06-29 11 views
1

Ich versuche, einen Instrumentierungstest zu unserem Projekt hinzuzufügen, aber es scheint, dass Gradle den Android JUnit Test Runner nicht korrekt zum Klassenpfad des Projekts hinzufügt. Die Test depenencies meiner gradle Build-Datei sieht wie folgt aus:Android JUnit-Test-Runner konnte nicht aufgelöst werden

testCompile 'junit:junit:4.12' 
androidTestCompile 'junit:junit:4.12' 

androidTestCompile 'com.android.support.test:runner:0.5' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 

Wir sind die neueste Version der Support-Bibliothek (24.0.0) verwenden, aber die aktuelle Version des Testläufer (JUnit runner) und Espresso Nutzung Version 23.1.0. Um die Version Konflikt zu lösen, zwinge ich die Läufer (und Espresso) verwenden, um die neuere Version (ich die Auswirkungen verstehen, aber wir können nicht die ältere Version verwenden):

androidTestCompile 'com.android.support:support-v4:24.0.0' 
androidTestCompile 'com.android.support:appcompat-v7:24.0.0' 
androidTestCompile 'com.android.support:support-v13:24.0.0' 
androidTestCompile 'com.android.support:recyclerview-v7:24.0.0' 
androidTestCompile 'com.android.support:design:24.0.0' 
androidTestCompile 'com.android.support:support-annotations:24.0.0' 

und:

configurations.all { 
    resolutionStrategy { 
     force 'com.android.support:support-annotations:24.0.0' 
    } 
} 

Aus irgendeinem Grund fügt Gradle jedoch nicht das Paket runner hinzu (unter android.support.test). So

import android.support.test.runner.AndroidJUnit4; 

löst einen Fehler: cannot resolve symbol 'runner'. Habe den Cache von Android Studio gelöscht, die IDE neu gestartet, den Gradle-Cache (sowohl Projekt als auch Global) gelöscht, alles ohne Erfolg. Weiß jemand was los ist?

+0

Liegt daran, dass die support-annotations rückwärtskompatible Änderungen (z. B. das Entfernen einiger APIs) verursacht haben und der Test Runner defekt ist (kann nicht mit der neueren Version der lib arbeiten), da er ältere (wahrscheinlich entfernte) verwendet APIs? – Metallica

+0

Es scheint, dass das Problem nichts mit der Version zu tun hat. Ich bekomme immer noch den gleichen Fehler, auch wenn ich die ältere Version (vom Test Runner) verwende. Irgendeine Idee warum? – Metallica

+0

Haben Sie das gleiche Problem nach der Aktualisierung von Android Studio von 2.2.6 auf 2.2.7 – Ernest

Antwort

1

Versuchen Sie: androidTestCompile 'com.android.support.test:rules:0.5'

0

Das ist meine alte Frage, aber dachte, es könnte helfen, das Problem und die Lösung zu erklären. Das Problem war mit dem Namen der Debug-Build-Variante: Wenn Sie Ihre Debug-Build-Variante alles andere als debug nennen, stellen Sie sicher, Android Gradle Plugin durch Hinzufügen von testBuildType "yourDebugBuildVariantName" zu Ihrem build.gradle Skript (build.gradle Ihres App-Moduls nicht das Projekt global) in der android{} Abschnitt oder benennen Sie Ihre Debug-Build-Variante in nur debug. Wenn Sie mehrere Debug-Build-Varianten haben, müssen Sie einen von ihnen, auf dem spezifizieren Sie möchten, dass Ihre Tests auszuführen, wie: testBuildType armDebug:

apply plugin: 'com.android.application' 
... 

android { 

    testBuildType "myDebug" <- 

    compileOptions { ... } 

    sourceSets { ... } 

    signingConfigs { ... } 
} 

Auch mit dieser expliziten Config scheint Gradle gelegentlich Probleme zu haben mit laufende Instrumentierungstests. Der beste Weg, dies zu umgehen, besteht darin, Ihre Debug-Build-Variante (die Version, auf der Sie Ihre Tests ausführen) in debug umzubenennen, wenn dies für Sie eine praktikable Option ist.