Cómo realizar pruebas en Android Studio

Android Studio está diseñado para simplificar la ejecución de pruebas. Contiene muchas funciones para simplificar la forma en que creas, ejecutas y analizas pruebas. Puedes configurar pruebas que se ejecuten en tu máquina local o pruebas de instrumentación que se ejecuten en un dispositivo. Puedes ejecutar fácilmente una sola prueba o un grupo específico de pruebas en uno o más dispositivos. Los resultados de la prueba se mostrarán directamente en Android Studio.

Figura 1: Android Studio muestra una descripción general de los resultados de las pruebas

En esta página, se explica cómo administrar pruebas en Android Studio. Para obtener información sobre cómo escribir pruebas automatizadas de Android, consulta Prueba apps en Android.

Tipos de pruebas y ubicaciones

La ubicación de las pruebas depende del tipo de prueba que escribas. Los proyectos de Android tienen directorios de código fuente predeterminados para las pruebas instrumentadas y de unidades locales.

Las pruebas de unidades locales se encuentran en module-name/src/test/java/. Estas son pruebas que se ejecutan en la máquina virtual Java (JVM) local de tu máquina. Usa estas pruebas a fin de minimizar el tiempo de ejecución cuando las pruebas no tengan dependencias del framework de Android o cuando puedas crear dobles de prueba para las dependencias del framework de Android. Si quieres obtener más información a fin de escribir pruebas de unidades locales, consulta el artículo para compilar pruebas de unidades locales.

Las pruebas de instrumentación se encuentran en $module-name/src/androidTest/java/. Estas pruebas se ejecutan en un emulador o dispositivo de hardware. Tienen acceso a las APIs de Instrumentation que te brindan acceso a información, como la clase Context, en la app que estás probando y te permiten controlar la app desde el código de prueba. Las pruebas de instrumentación se compilan en un APK independiente, por lo que tienen su propio archivo AndroidManifest.xml. Este archivo se genera automáticamente, pero puedes crear tu propia versión en $module-name/src/androidTest/AndroidManifest.xml, que se combinará con el manifiesto generado. Usa pruebas de instrumentación cuando escribas pruebas de IU de integración y funcionales para automatizar la interacción de usuarios, o cuando tus pruebas tengan dependencias de Android para las que no puedas crear dobles de prueba. Si quieres obtener más información a fin de escribir pruebas de instrumentación, consulta los artículos para compilar pruebas de instrumentación y para automatizar pruebas de IU.

Puedes colocar las pruebas en directorios específicos de variantes de compilación para probar solo variantes de compilación específicas. Por ejemplo, puedes colocar algunas pruebas de unidades locales en $module-name/src/testMyFlavor/java/ para que las pruebas se orienten a tu app compilada con el código fuente de esta variante. Si quieres obtener más información a fin de crear estas pruebas personalizadas, consulta el artículo para crear una prueba de instrumentación para una variante de compilación.

Cuando creas un proyecto nuevo o agregas un módulo de app, Android Studio crea los conjuntos de orígenes de pruebas indicados arriba e incluye un ejemplo de archivo de prueba en cada uno. Puedes verlos en la ventana Project, como se muestra en la Figura 2.

Figura 2: Las pruebas de instrumentación (1) de tu proyecto y las pruebas de JVM locales (2) se pueden ver en la vista Project (izquierda) o en la vista Android (derecha).

Cómo crear pruebas nuevas

Puedes agregar una prueba nueva para una clase o un método específicos directamente desde su código fuente mediante los siguientes pasos:

  1. Abre el archivo fuente que contiene el código que deseas probar.
  2. Coloca el cursor en el nombre de la clase o el método que desees probar y presiona Control + mayúsculas + T (Comando + mayúsculas + T en macOS).
  3. En el menú que aparece, haz clic en Create New Test.
  4. En el diálogo Create Test, elige JUnit4, edita los campos y métodos que desees generar y, luego, haz clic en OK.
  5. En el diálogo Choose Destination Directory, haz clic en el conjunto de orígenes correspondiente al tipo de prueba que desees crear: androidTest para una prueba de instrumentación o test para una prueba de unidad local. Luego, haz clic en OK.

Como alternativa, puedes crear un archivo de prueba genérico en el conjunto de orígenes de pruebas correspondiente de la siguiente manera:

  1. En la ventana Project, ubicada a la izquierda, haz clic en el menú desplegable y selecciona la vista Android.
  2. Haz clic con el botón derecho en el directorio java y selecciona New > Java Class o New > Kotlin Class/File. De manera alternativa, puedes seleccionar el directorio java y usar la combinación de teclas Control + N (Comando + N en macOS).
  3. En el diálogo Choose Destination Directory, haz clic en el conjunto de orígenes correspondiente al tipo de prueba que desees crear: androidTest para una prueba de instrumentación o test para una prueba de unidad local. Luego, haz clic en OK.
  4. Escribe un nombre para el archivo y haz clic en OK.

Si tu app no se compila después de agregar una prueba, asegúrate de tener configuradas las dependencias de bibliotecas de pruebas correctas. Consulta los artículos para compilar pruebas locales y pruebas de instrumentación para conocer las dependencias correctas.

Cómo ejecutar pruebas

Antes de ejecutar cualquier prueba, asegúrate de que tu proyecto esté completamente sincronizado con Gradle. Para ello, haz clic en la opción Sync Project de la barra de herramientas. Puedes ejecutar pruebas con diferentes niveles de detalle:

  • Para ejecutar todas las pruebas en un directorio o archivo, abre la ventana Project y realiza una de las siguientes acciones:

    • Haz clic con el botón derecho en un directorio o archivo y selecciona Run .
    • Selecciona el directorio o el archivo, y usa la combinación de teclas Control + mayúsculas + R.
  • Para ejecutar todas las pruebas en una clase o un método específico, abre el archivo de prueba en el editor de código y realiza una de las siguientes acciones:

    • Presiona el ícono Run test en el margen.
    • Haz clic con el botón derecho en la clase o el método de prueba y, luego, en Run .
    • Selecciona la clase o el método de prueba y usa la combinación de teclas Control + mayúsculas + R.

Las pruebas instrumentadas se ejecutarán en un emulador o dispositivo físico. Para obtener más información sobre la configuración de dispositivos físicos, consulta el artículo para ejecutar apps en un dispositivo de hardware. Si quieres obtener más información para configurar emuladores, consulta Cómo ejecutar apps en Android Emulator.

Cómo configurar la ejecución de la prueba

De forma predeterminada, tu prueba se ejecuta con la configuración de ejecución predeterminada de Android Studio. Si deseas cambiar alguna de las configuraciones de ejecución, como las opciones del ejecutor de instrumentación y de implementación, puedes editar la configuración de ejecución en el diálogo Run/Debug Configurations (haz clic en Run > Edit Configurations).

Ejecutor de pruebas de Gradle unificado

El complemento de Android para Gradle 7.1.0 y Android Studio Bumblebee y versiones posteriores usan la propia implementación de Gradle del ejecutor de pruebas instrumentado de Android para ejecutar pruebas de instrumentación. Si usas el mismo ejecutor de pruebas, es probable que los resultados sean coherentes, ya sea que lo ejecutes con AGP desde la línea de comandos, como en un servidor de integración continua, o desde Android Studio.

Figura 3: Ejecutor de pruebas de Gradle unificado

En las versiones anteriores de Android Studio, se usa el ejecutor de pruebas de instrumentación de Android para IntelliJ en lugar del ejecutor de pruebas de instrumentación de Android para Gradle. Por lo tanto, si no usas la versión más reciente de Android Studio, dependiendo de si ejecutas tus pruebas desde Android Studio o desde la línea de comandos con el complemento de Gradle, es posible que veas resultados de pruebas diferentes, como pruebas que tienen resultados satisfactorios con un ejecutor y negativos con otro.

Figura 4: Ejecutores de pruebas discretos en versiones anteriores de Android Studio

Si ya guardaste configuraciones de pruebas de instrumentación en tu proyecto, estas usarán Gradle para ejecutar pruebas en tu dispositivo conectado. Puedes crear una configuración nueva de prueba de instrumentación mediante la acción de margen junto a la clase o el método de prueba, como se muestra a continuación.

Figura 5: Cómo ejecutar pruebas desde la acción de margen

Cuando ejecutas tus pruebas de instrumentación, puedes confirmar si Android Studio usa el ejecutor de pruebas de Gradle inspeccionando el resultado de la prueba en el resultado de la tarea de matriz de pruebas de Gradle.

Cómo ejecutar pruebas en varios dispositivos de manera simultánea

Las pruebas de instrumentación se ejecutan de forma predeterminada en un emulador o dispositivo físico. Si deseas ver cómo se comportan las pruebas en un conjunto de dispositivos más grande, sigue los pasos a continuación para seleccionar más dispositivos:

  1. Antes de ejecutar las pruebas, abre el menú desplegable del dispositivo de destino y selecciona Select Multiple Devices….

    Figura 6: Selecciona el menú desplegable "Select Multiple Devices"

  2. Selecciona los dispositivos de destino y haz clic en OK.

  3. Asegúrate de que el texto del menú desplegable de destino cambie a Multiple Devices y haz clic en Run .

  4. En la ventana de herramientas de la matriz de pruebas, se mostrarán los resultados de la prueba para cada configuración del dispositivo seleccionada.

    Figura 7: Resultados de la prueba en la ventana de herramientas de la matriz de pruebas

  5. Puedes hacer clic en una prueba específica para inspeccionar el resultado en el panel de resultados. También puedes ordenar las pruebas haciendo clic en las distintas columnas.

Cómo ejecutar pruebas con Firebase Test Lab

Con Firebase Test Lab, puedes probar simultáneamente tu app en muchos dispositivos Android y configuraciones de dispositivos populares (diferentes combinaciones de configuración regional, orientación, tamaño de pantalla y versión de plataforma). Estas pruebas se ejecutan en dispositivos físicos y virtuales, en centros de datos remotos de Google. Los resultados de la prueba proporcionan registros de prueba e incluyen los detalles de cualquier falla en la app.

Para comenzar a usar Firebase Test Lab, debes hacer lo siguiente:

  1. Crea una Cuenta de Google, si todavía no tienes una.
  2. En Firebase console, haz clic en Create New Project.

Android Studio proporciona herramientas integradas que te permiten configurar cómo implementar las pruebas en Firebase Test Lab. Después de crear un proyecto de Firebase, puedes crear una configuración de prueba y ejecutar las pruebas:

  1. En el menú principal, haz clic en Run > Edit Configurations.
  2. Haz clic en Add New Configuration y selecciona Android Instrumented Tests.
  3. Ingresa o selecciona los detalles de la prueba, como nombre, tipo de módulo, tipo de prueba y clase de prueba.
  4. En el menú desplegable Target, en Deployment Target Options, selecciona Firebase Test Lab Device Matrix.
  5. Si no accediste, haz clic en Sign in with Google y permite que Android Studio acceda a tu cuenta.
  6. Junto a Cloud Project, selecciona tu proyecto de Firebase de la lista.
  7. Junto a Matrix Configuration, selecciona una de las configuraciones predeterminadas del menú desplegable o crea una propia si presionas Open Dialog . Puedes seleccionar uno o más dispositivos, versiones de Android, configuraciones regionales y orientaciones de pantalla con las que quieras probar tu app. Firebase Test Lab probará tu app con cada combinación de selecciones cuando genere los resultados de la prueba.
  8. Haz clic en OK en el diálogo Run/Debug Configurations para salir.
  9. Para ejecutar las pruebas, haz clic en Run .

Figura 8: Cómo crear una configuración de prueba para Firebase Test Lab

Analiza los resultados de la prueba

Cuando Firebase Test Lab complete la ejecución de las pruebas, se abrirá la ventana Run para mostrar los resultados, como se ilustra en la Figura 9. Es posible que debas hacer clic en Show Passed para ver todas las pruebas ejecutadas.

Figura 9: Cómo ver los resultados de las pruebas instrumentadas con Firebase Test Lab

También puedes analizar tus pruebas en la Web siguiendo el vínculo que se muestra al comienzo del registro de ejecución de pruebas en la ventana Run.

Cómo ver la cobertura de pruebas

La herramienta de cobertura de pruebas está disponible para las pruebas de unidades locales a fin de realizar un seguimiento del porcentaje y las áreas del código de tu app que abarcaron las pruebas de tu unidad. Usa la herramienta de cobertura de pruebas para determinar si probaste correctamente los elementos, las clases, los métodos y las líneas de código que forman parte de tu app.

Para ejecutar pruebas con cobertura, sigue los mismos pasos descritos en Cómo ejecutar pruebas solo que en lugar de hacer clic en Run tests , haz clic en Run test-name with coverage . En la ventana Project, esta opción podría estar oculta detrás de More Run/Debug. También puedes definir la configuración de cobertura en el diálogo Run/Debug Configurations, en la pestaña Code Coverage.

Figura 10: Porcentajes de cobertura de código para una aplicación

Consulta los resultados de la prueba

Cuando ejecutas una o más pruebas desde Android Studio, los resultados aparecen en la ventana Run. En la Figura 11, se muestra una prueba que se ejecutó de manera correcta.

Figura 11: Los resultados de la prueba se muestran en la ventana "Run"

En la ventana Run, se muestran las pruebas en una vista de árbol a la izquierda, mientras que los resultados y mensajes del paquete de pruebas actual aparecen en el panel de resultados de la derecha. Usa las barras de herramientas, los menús contextuales y los íconos de estado para administrar los resultados de pruebas de la siguiente manera:

  1. Usa la barra de herramientas de ejecución para volver a ejecutar o detener la prueba actual, volver a ejecutar las pruebas con errores (que no se muestran porque solo está disponible para las pruebas de unidades), pausar los resultados y volcar subprocesos.
  2. Usa la barra de herramientas de pruebas para filtrar y ordenar resultados de pruebas. También puedes expandir o contraer nodos, mostrar la cobertura de la prueba y exportar o importar resultados de pruebas.
  3. Haz clic en el menú contextual para realizar un seguimiento de la prueba de ejecución, desplazarse al seguimiento de pila, mostrar las estadísticas de intercalado, abrir el código fuente en una excepción, desplazarte automáticamente a la fuente y seleccionar la primera prueba con errores una vez que se complete la ejecución.
  4. Los íconos de estado de la prueba indican si una prueba tiene un error, se ignoró, falló, está en curso, se completó correctamente, está pausada, se canceló o no se ejecutó.
  5. Haz clic con el botón derecho en una línea de la vista de árbol para ver un menú contextual que te permita ejecutar las pruebas en el modo de depuración, abrir el archivo de código fuente de la prueba o saltar a la línea del código fuente que se está probando.

Cómo analizar pruebas fallidas

Cuando una o más de tus pruebas fallan, la ventana de resultados muestra una señal de advertencia y la cantidad de fallas (por ejemplo, "Pruebas fallidas: 1"):

Figura 12: Detalles de la prueba fallida en el panel de resultados

Cuando haces clic en la prueba fallida en la vista de árbol a la izquierda, en el panel de resultados de la derecha, se muestran los detalles de esa prueba. Muestra el valor esperado junto al valor real, de manera que puedas compararlos. El vínculo Click to see difference abre un visor de diferencias en el que puedes ver los resultados uno al lado del otro.

Más información

En esta página, se abordan los pasos básicos que debes seguir cuando creas y ejecutas tu primera prueba con Android Studio. También puedes optar por ejecutar pruebas desde la línea de comandos. Además, puedes consultar la documentación de IntelliJ sobre las pruebas. Si quieres obtener más información para configurar tus pruebas cuando creas un conjunto de pruebas más grande, consulta Configuración de prueba avanzada.