Cómo configurar el proyecto para AndroidX Test

Para usar AndroidX Test, debes incluir varias bibliotecas específicas de prueba. En esta guía, se explica cómo declarar estas bibliotecas en los archivos de proyecto de tu app y se muestra cómo están organizadas las bibliotecas de AndroidX Test.

Cómo agregar bibliotecas de Android Test

Para usar AndroidX Test, debes modificar las dependencias de classpath de la app del proyecto y manifestarlas en su entorno de desarrollo, como se muestra en las siguientes secciones.

Agrega dependencias de Gradle

Para modificar las dependencias de classpath de tu proyecto de app, realiza los siguientes pasos:

  1. Abre el archivo build.gradle de tu app.
  2. En la sección repositories, asegúrate de que se muestre el repositorio Maven de Google:

        allprojects {
            repositories {
                jcenter()
                google()
            }
        }
  3. Para cada paquete de AndroidX Test que quieras usar, agrega el nombre del paquete a la sección dependencies. Por ejemplo, para agregar el paquete espresso-core, agrega las siguientes líneas:

        dependencies {
            ...
            androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
        }

    Precaución: El uso de dependencias dinámicas (por ejemplo, espresso-core:3.1.0+) puede causar actualizaciones de versión inesperadas e incompatibilidades de regresión. Recomendamos especificar explícitamente un número de versión determinado (por ejemplo, espresso-core:3.1.0).

  4. Si la app compila pruebas de clases basadas en JUnit, como Assert y TestSuiteLoader, agrega las siguientes líneas en la sección de android del archivo:
        android {
            ...
    
            // Gradle automatically adds 'android.test.runner' as a dependency.
            useLibrary 'android.test.runner'
    
            useLibrary 'android.test.base'
            useLibrary 'android.test.mock'
        }

    Nota: Solo debes incluir las bibliotecas que contienen las clases que se usan en tu app. Para obtener una lista de las clases que aparecen en cada biblioteca, consulta Bibliotecas basadas en JUnit.

Agrega declaraciones de manifiesto

Para ejecutar pruebas con clases basadas en JUnit, agrega los elementos necesarios de <uses-library> al manifiesto de la app de prueba. Por ejemplo, si agregas pruebas que dependen de la biblioteca android.test.runner, agrega el siguiente elemento al 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 al apuntar a Android 9 o un nivel posterior

La guía de esta sección se aplica solo si apuntas a Android 9 (API nivel 28) o versiones posteriores y la versión mínima de SDK para tu app está configurada en Android 9 (API nivel 28) o una versión posterior.

La biblioteca android.test.runner depende de forma implícita de las bibliotecas 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:

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

Lista de dependencias de AndroidX Test

AndroidX Test incluye varias dependencias, como se muestra en las siguientes secciones.

Dependencias de Gradle

Las siguientes dependencias basadas en Gradle están disponibles en AndroidX Test:

dependencies {
      // Core library
      androidTestImplementation 'androidx.test:core:1.0.0'

      // AndroidJUnitRunner and JUnit Rules
      androidTestImplementation 'androidx.test:runner:1.1.0'
      androidTestImplementation 'androidx.test:rules:1.1.0'

      // Assertions
      androidTestImplementation 'androidx.test.ext:junit:1.0.0'
      androidTestImplementation 'androidx.test.ext:truth:1.0.0'
      androidTestImplementation 'com.google.truth:truth:0.42'

      // Espresso dependencies
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
      androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0'
      androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'
      androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.1.0'
      androidTestImplementation 'androidx.test.espresso:espresso-web:3.1.0'
      androidTestImplementation 'androidx.test.espresso.idling:idling-concurrent:3.1.0'

      // 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:3.1.0'
    }
    

Como se analizó en Cómo agregar dependencias de Gradle desde un repositorio de Maven, puedes agregar estas dependencias a tu entorno de desarrollo agregando cada dependencia dentro del archivo build.gradle de nivel de módulo.

Bibliotecas basadas en JUnit

En las listas de esta sección, se muestran cómo la plataforma organiza las clases basadas en JUnit en Android 9 (API nivel 28) y versiones posteriores.

android.test.base

Esta biblioteca consta de las siguientes clases y todas ellas están dentro del paquete junit.framework:

La biblioteca también está compuesta por las siguientes clases que dejaron de estar disponibles partir de Android 9 (API nivel 28):

Paquete android.test

Paquete android.test.suitebuilder.annotation

Paquete com.android.internal.util

android.test.runner

Esta biblioteca consta de las siguientes clases:

Paquete android.test

Paquete junit.runner

La biblioteca también está compuesta por las siguientes clases que dejaron de estar disponibles partir de Android 9 (API nivel 28):

Paquete android.test

Paquete android.test.suitebuilder

android.test.mock

Esta biblioteca consta de las siguientes clases y todas están incluidas en el paquete android.test.mock:

La biblioteca también consta de las siguientes clases que dejaron de estar disponibles a partir de Android 9 (API nivel 28). Cada clase se encuentra en el paquete android.test.mock: