Ich bin neu in der Testwelt und noch mehr in der Android-Testwelt. Während ich über Robolectric recherchiere, das bei Tests mit Android hilft, verwirrt mich eines am meisten. Manchmal sehe ich im Web Leute, die testCompile
Schlüsselwörter in Abhängigkeiten des Gradle-Build-Skripts verwenden, wenn sie auf Robolectric verweisen, während andere es verwenden androidTestCompile
. Sicherlich können beide nicht gültig sein?
Kann jemand den Unterschied zwischen beiden erklären und welche davon sollten bei der Verwendung von Robolectric verwendet werden?
testCompile
Konfiguration. DerandroidTestCompile
Konfiguration hinzugefügte Abhängigkeiten stehen nur der Quelle in 'src / androidTest' zur Verfügung, die tatsächlich in ein APK integriert und auf einem Gerät bereitgestellt ist.So beantworten Sie Ihre Frage: Verwenden Sie testCompile für robolectric
warum, weil robolectric auf der JVM läuft und das gesamte Verhalten des Android-Geräts verspottet.
testCompile und androidTestCompile sind "gemäß Konvention" Android-Ordner, die gradle beim Ausführen von Aufgaben verwendet, die vom Android-Plugin bereitgestellt werden.
androidTestDebug wählt Tests aus dem androidTest-Ordner aus, testDebug wählt Tests aus dem Testordner aus,
Auch hier handelt es sich nur um Konventionsordner, für die Sie Quellensätze für diese Konfigurationen angeben können
Hinweis: Espresso ist eine großartige Bibliothek, die versucht, sich von Robolectric zu entfernen :)
quelle
// Unit Testing
Der obige Code ist eine Abhängigkeit von JUnit 4 in der Datei build.gradle in Android Studio. Sie sehen, dass es testCompile hat, da JUnit auf JVM ausgeführt wird und zum Ausführen kein Gerät oder Emulator erforderlich ist. Das bedeutet auch, dass für JUnit-Tests der Anwendungskontext nicht ausgeführt werden muss. Wenn dies erforderlich ist, müssen wir sie "verspotten".
// Insturmented Unit Testing
Jetzt sehen wir hier androidTestCompile, da wir dieses Mal beabsichtigen, das Gerät oder den Emulator für Tests zu verwenden, dh für Instrumentationstests. Zur besseren Klärung würde ich empfehlen, von developer.android.com zu lesen
quelle
Um die Abhängigkeit für JVM-Tests oder Unit-Tests hinzuzufügen (Tests, die nur auf der Java-Umgebung basieren, benötigen keine Android-Umgebung).
Wir verwenden die Direktive testCompile. Beispiel:
Um den Test "Abhängigkeit für Instrumentierung" hinzuzufügen (diese Tests basieren hauptsächlich auf der Android-Umgebung), verwenden wir die
androidTestCompile
Direktive.quelle