Jestem nowy w świecie testowania, a jeszcze bardziej w świecie testowania Androida. Podczas badań nad Robolectric, które pomagają w testach na Androidzie, jedna rzecz najbardziej mnie dezorientuje. Czasami w Internecie widzę ludzi używających testCompile
słowa kluczowego w zależnościach skryptu budującego gradle podczas odwoływania się do Robolectric, podczas gdy inni używają androidTestCompile
. Z pewnością oba nie mogą być ważne?
Czy ktoś może wyjaśnić różnicę między obydwoma i które z nich powinny być używane podczas korzystania z Robolectric?
testCompile
konfiguracji. Zależności dodane doandroidTestCompile
konfiguracji będą dostępne tylko dla źródła w „src / androidTest”, które jest faktycznie wbudowane w plik APK i wdrażane na urządzeniu.Aby odpowiedzieć na twoje pytanie - użyj testCompile dla robolectric
dlaczego, ponieważ robolectric działa na JVM, szydząc z zachowania urządzenia z Androidem.
testCompile i androidTestCompile to foldery systemu Android, których używa Gradle podczas wykonywania zadań udostępnianych przez wtyczkę dla Androida.
androidTestDebug wybiera testy z folderu androidTest, testDebug wybiera testy z folderu test,
Ponownie, są to tylko foldery konwencji, które możesz podać zestawy źródłowe dla tych konfiguracji
Uwaga: espresso to niesamowita biblioteka, spróbuj odejść od robolectric :)
źródło
//testów jednostkowych
testCompile 'junit:junit:4.12'
Powyższy kod jest zależnością JUnit 4 w pliku build.gradle w Android Studio. Widzisz, że ma testCompile, ponieważ JUnit działa na JVM i nie wymaga do uruchomienia urządzenia ani emulatora. Oznacza to również, że testy JUnit nie będą wymagały do uruchomienia kontekstu aplikacji, a jeśli będą wymagały, musielibyśmy je "MOCK".
// Insturmented Unit Testing
androidTestCompile('com.android.support.test:runner:0.5', { exclude group: 'com.android.support', module: 'support-annotations' })
Teraz widzimy tutaj androidTestCompile, ponieważ tym razem zamierzamy użyć urządzenia lub emulatora do testów, czyli testowania Instrumentacji. Aby uzyskać lepsze wyjaśnienie, proponuję przeczytać na stronie developer.android.com
źródło
Aby dodać zależności dla testów JVM lub testów jednostkowych (testowanie tych opiera się tylko na środowisku java, nie potrzebujemy żadnego środowiska Android).
Używamy dyrektywy testCompile. Przykład:
dependencies { testCompile gradleTestKit() }
Aby dodać zależność do testu instrumentacji (te testy polegają głównie na środowisku Android), używamy
androidTestCompile
dyrektywy.źródło