Verwirrt über testCompile und androidTestCompile in Android Gradle
Ich bin neu in testing Welt und noch mehr, um Android-Tests Welt. Während der recherche auf Robolectric, dass aids-tests, die auf android eine Sache verwirrt mich am meisten. Manchmal auf der Website, die ich sehe Menschen mit testCompile
Schlüsselwort in Abhängigkeiten von den gradle-build-Skript Referenzierung von Robolectric während andere androidTestCompile
. Sicherlich beides kann nicht gültig sein?
Kann jemand erklären den Unterschied zwischen den beiden, und welche dieser sollte derjenige sein, der verwendet wird, wenn mit Robolectric?
InformationsquelleAutor der Frage Lucas | 2015-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach
testCompile
ist die Konfiguration für unit-tests (diejenigen, die sich in src/test) undandroidTestCompile
ist für den test verwendeten api (die, die sich in src/androidTest). Da Sie beabsichtigen, zu schreiben unit-tests verwenden, sollten SietestCompile
.Update: Der Hauptunterschied zwischen den beiden ist die
test
sourceset läuft in einem regulären Java-JVM, in der Erwägung, dass dieandroidTest
sourceset tests, die auf einem Android-Gerät (oder einem emulator).InformationsquelleAutor der Antwort Mark Vieira
Ihre Frage zu beantworten - Nutzen testCompile für robolectric
warum, da robolectric läuft auf der JVM-Spott alle android-Gerät Verhalten.
testCompile und androidTestCompile sind "durch Konvention" android-Ordner, die gradle verwendet, während der Ausführung von Aufgaben zur Verfügung gestellt von android-plugin.
androidTestDebug picks tests von androidTest Ordner
testDebug picks tests aus dem test-Ordner,
Wieder, dass dies nur per Konvention Ordner, die Sie geben können, die Quelle setzt für diese Konfigurationen
Hinweis: der espresso ist so eine großartige Bibliothek versuchen, sich von robolectric 🙂
InformationsquelleAutor der Antwort Amit Kaushik
//unit-Tests
Dem obigen code ist eine Abhängigkeit von JUnit 4 im Aufbau.gradle-Datei im android studio.
Sie sehen, dass es testCompile, denn JUnit läuft auf der JVM und nicht erfordert, ein Gerät oder emulator ausgeführt werden. Das bedeutet auch, dass die JUnit-tests nicht verlangen, dass die Anwendung Kontext zu führen und, wenn wir Sie brauchen würden, um zu "SPOTTEN".
//Insturmented Unit-Tests
Nun sehen wir androidTestCompile hier, weil diese Zeit, die wir nutzen wollen, das Gerät oder den emulator für tests, Instrumentierung testen. Für beter Klärung würde ich vorschlagen, zu Lesen developer.android.com
InformationsquelleAutor der Antwort Lazycoder_007