Soy nuevo en el mundo de las pruebas y aún más en el mundo de las pruebas de Android. Mientras investigaba sobre Robolectric que ayuda con las pruebas en Android, una cosa me confunde más. A veces en la web veo personas que usan testCompile
palabras clave en dependencias del script de compilación de gradle cuando hacen referencia a Robolectric mientras que otros usan androidTestCompile
. ¿Ciertamente ambos no pueden ser válidos?
¿Alguien puede explicar la diferencia entre ambos y cuál de estos debería ser el que se usa al usar Robolectric?
testCompile
configuración. Las dependencias agregadas a laandroidTestCompile
configuración solo estarán disponibles para la fuente en 'src / androidTest', que en realidad está integrado en un APK y se implementa en un dispositivo.Para responder a su pregunta, use testCompile para robolectric
por qué, porque robolectric se ejecuta en la JVM burlándose de todo el comportamiento del dispositivo Android.
testCompile y androidTestCompile son carpetas de Android "por convención" que gradle usa mientras ejecuta tareas proporcionadas por el complemento de Android.
androidTestDebug selecciona pruebas de la carpeta androidTest, testDebug elige pruebas de la carpeta de prueba,
Nuevamente, estas son solo carpetas por convención que puede proporcionar conjuntos de fuentes para estas configuraciones
Nota: el espresso es una biblioteca tan impresionante que intenta alejarte de robolectric :)
fuente
//examen de la unidad
testCompile 'junit:junit:4.12'
El código anterior es una dependencia de JUnit 4 en el archivo build.gradle en Android Studio. Verá que tiene testCompile, porque JUnit se ejecuta en JVM y no requiere un dispositivo o emulador para ejecutarse. Eso también significa que las pruebas de JUnit no requerirán que se ejecute el contexto de la aplicación y, si lo requieren, tendremos que hacer una "MOCK".
// Pruebas unitarias instauradas
androidTestCompile('com.android.support.test:runner:0.5', { exclude group: 'com.android.support', module: 'support-annotations' })
Ahora vemos androidTestCompile aquí, porque esta vez pretendemos usar el dispositivo o emulador para las pruebas, es decir, las pruebas de instrumentación. Para una mejor aclaración, sugeriría leer de developer.android.com
fuente
Para agregar Dependencia para las pruebas de JVM o las pruebas unitarias (las pruebas se basan solo en el entorno Java, no necesitamos ningún entorno Android).
Usamos la directiva testCompile. Ejemplo:
dependencies { testCompile gradleTestKit() }
Para agregar la prueba de dependencia para la instrumentación (las pruebas se basan principalmente en el entorno Android), usamos la
androidTestCompile
directiva.fuente