studio - Confundido sobre testCompile y androidTestCompile en Android Gradle
robolectric android studio (4)
//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 el estudio de Android. 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 JUnit no requerirán que se ejecute el contexto de la aplicación y si lo requieren tendremos que "MOCK".
// Pruebas unitarias de instrumentos
androidTestCompile(''com.android.support.test:runner:0.5'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
Ahora vemos androidTestCompile aquí, porque esta vez tenemos la intención de usar el dispositivo o el emulador para las pruebas, es decir, pruebas de instrumentación. Para una mejor aclaración, sugeriría leer de developer.android.com
Soy nuevo en el mundo de las pruebas y aún más en el mundo de las pruebas de Android.
Al hacer una investigación sobre Robolectric que ayuda con las pruebas en Android, una cosa me confunde más.
A veces en la web veo personas que usan la palabra clave
testCompile
en dependencias del script de compilación 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?
Para agregar dependencia para pruebas JVM o pruebas unitarias (las pruebas que dependen solo del entorno de Java, no necesitamos ningún entorno de Android).
Utilizamos la directiva testCompile. Ejemplo:
dependencies {
testCompile gradleTestKit()
}
Para agregar la prueba de dependencia para instrumentación (las pruebas se basan principalmente en el entorno de Android), utilizamos la directiva
androidTestCompile
.
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 utiliza mientras ejecuta tareas proporcionadas por el complemento de Android.
androidTestDebug selecciona pruebas de la carpeta androidTest, testDebug selecciona pruebas de la carpeta de prueba,
De nuevo, estas son solo por carpetas de convenciones que puede proporcionar conjuntos de origen para estas configuraciones
Nota: el espresso es una biblioteca tan increíble que intenta alejarse de la robótica :)
Simplemente
testCompile
es la configuración para las pruebas unitarias (las ubicadas en
src / test
) y
androidTestCompile
se usa para la API de prueba (que se encuentra en
src / androidTest
).
Como tiene la intención de escribir pruebas unitarias, debe usar
testCompile
.
Actualización:
La distinción principal entre los dos es que el conjunto de fuentes de
test
ejecuta en una JVM Java normal, mientras que las pruebas de conjunto de
androidTest
AndroidTest se ejecutan en un dispositivo Android (o un emulador).