Qual è la differenza tra le cartelle src / androidtest e src / test?


119

In un progetto, in Android Studio, per impostazione predefinita, sono presenti due cartelle di test.

Il primo è src/androidTest. Questa cartella esisteva già nella versione precedente di Android Studio. Tuttavia, ora c'è una nuova cartella di test, per impostazione predefinita src/test, e una nuova dipendenza, testCompile 'junit: junit: 4.12'in build.gradle.

Quale cartella utilizzo per i test? Quali sono le differenze tra i due?

Risposte:


134

src/androidTest è per unit test che coinvolgono la strumentazione Android.

src/testè per puro unit test che non coinvolge il framework Android. Puoi eseguire i test qui senza eseguire su un dispositivo reale o su un emulatore.

Puoi usare entrambe le cartelle. Usa il primo per testare il codice che utilizza il framework Android. Usa il secondo per testare il codice che sono classi java pure. I metodi per scrivere i test sono quasi gli stessi.

Maggiori informazioni qui: http://developer.android.com/tools/testing/testing_android.html



Mi hai appena salvato la giornata
C Johnson

che dire di androidTestDebug?
the_prole

48

Un'ottima fonte di informazioni relative ai test Android in generale è la pagina degli sviluppatori Best Practices for Testing :

  • Test unitari locali ( /src/test/java/)

Test unitari eseguiti localmente su Java Virtual Machine (JVM). Usa questi test per ridurre al minimo il tempo di esecuzione quando i tuoi test non hanno dipendenze dal framework Android o quando puoi simulare le dipendenze del framework Android.

  • Test strumentati ( /src/androidTest/java/)

Unit test eseguiti su un dispositivo o un emulatore Android. Questi test hanno accesso alle informazioni sulla strumentazione, come il contesto dell'app che stai testando. Usa questi test quando i tuoi test hanno dipendenze Android che gli oggetti fittizi non possono soddisfare.

https://developer.android.com/training/testing/start/index.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.