Cómo configurar el proyecto para AndroidX Test

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" />