AndroidX Test es una colección de bibliotecas de Jetpack que te permite ejecutar pruebas en comparación con las aplicaciones de Android. También proporciona una serie de herramientas para ayudarte a escribir estos y pruebas.
Por ejemplo, AndroidX Test proporciona reglas de JUnit4 para iniciar actividades y interactuar con ellos en pruebas JUnit4. También contiene frameworks de UI Testing, como como Espresso, UI Automator y el simulador de Robolectric.
Cómo agregar bibliotecas de Android Test
Para usar AndroidX Test, debes modificar las dependencias del proyecto de tu app en tu entorno de desarrollo.
Agrega dependencias de Gradle
Para modificar las dependencias del proyecto de tu app, completa los siguientes pasos:
- Paso 1: Abre el archivo
build.gradle
de tu módulo de Gradle. - Paso 2: En la sección de repositorios, asegúrate de que el complemento de Maven de Google el siguiente repositorio:
allprojects {
repositories {
jcenter()
google()
}
}
- Paso 3: Para cada paquete de AndroidX Test que quieras usar, agrega su paquete
el nombre de la
la sección de dependencias. Por ejemplo, para agregar el paquete
espresso-core
, agrega el elemento siguientes líneas:
Groovy
dependencies { ... androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion') }
Estas son las dependencias de AndroidX Test más comunes disponibles:
Groovy
dependencies { // Core library androidTestImplementation "androidx.test:core:$androidXTestVersion0" // AndroidJUnitRunner and JUnit Rules androidTestImplementation "androidx.test:runner:$testRunnerVersion" androidTestImplementation "androidx.test:rules:$testRulesVersion" // Assertions androidTestImplementation "androidx.test.ext:junit:$testJunitVersion" androidTestImplementation "androidx.test.ext:truth:$truthVersion" // Espresso dependencies androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion" androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion" // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK’"s compile classpath or the test APK // classpath. androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion" }
Kotlin
dependencies { // Core library androidTestImplementation("androidx.test:core:$androidXTestVersion") // AndroidJUnitRunner and JUnit Rules androidTestImplementation("androidx.test:runner:$testRunnerVersion") androidTestImplementation("androidx.test:rules:$testRulesVersion") // Assertions androidTestImplementation("androidx.test.ext:junit:$testJunitVersion") androidTestImplementation("androidx.test.ext:truth:$truthVersion") // Espresso dependencies androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion") androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion") // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK"s compile classpath or the test APK // classpath. androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion") }
La página Notas de la versión contiene una tabla con las versiones más recientes artefacto.
Consulta el Índice del paquete o el Índice de la clase para obtener una referencia específica. documentación en estas bibliotecas.
Proyectos que usan clases obsoletas
Si tu app usa pruebas que dependen de android.test
, basado en JUnit3, que dejó de estar disponible
clases , como InstrumentationTestCase
y TestSuiteLoader
, agrega
las siguientes líneas en la sección android
del archivo:
android {
...
useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}
Cómo agregar declaraciones en el manifiesto
Para ejecutar pruebas que dependan de clases android.test
obsoletas basadas en JUnit3, agrega
los elementos <uses-library>
necesarios para el manifiesto de la app de prueba Para
Por ejemplo, si agregas pruebas que dependen de la biblioteca android.test.runner
, agrega
el siguiente elemento en el manifiesto de tu app:
<!-- You don't need to include android:required="false" if your app's
minSdkVersion is 28 or higher. -->
<uses-library android:name="android.test.runner"
android:required="false" />
Para determinar la biblioteca que contiene una clase basada en JUnit, consulta Bibliotecas basadas en JUnit.
Consideraciones que debes tener en cuenta para usar clases obsoletas y orientar tu app a Android 9 o
más alta
Las instrucciones que se brindan en esta sección solo se aplican si tienes como objetivo Android 9 (nivel de API 28) o versiones posteriores y la versión mínima del SDK para tu app sea Android 9.
La biblioteca android.test.runner
depende implícitamente de android.test.base
y android.test.mock
. Si tu app solo usa clases de
android.test.base
o android.test.mock
, puedes incluir las bibliotecas por
por sí mismos:
<!-- For both of these declarations, you don't need to include
android:required="false" if your app's minSdkVersion is 28
or higher. -->
<uses-library android:name="android.test.base"
android:required="false" />
<uses-library android:name="android.test.mock"
android:required="false" />