Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

Cómo crear pruebas de IU con la grabadora de pruebas Espresso

La herramienta grabadora de pruebas Espresso te permite crear pruebas de IU para tu app sin la necesidad de escribir códigos de prueba. Cuando grabas un escenario de prueba, puedes registrar tus interacciones con un dispositivo y agregar aserciones para verificar elementos de la IU en determinadas capturas de pantalla de tu app. La Grabadora de pruebas Espresso luego usa la grabación guardada a fin de generar automáticamente una prueba de IU correspondiente que puedes ejecutar para probar tu app.

La Grabadora de pruebas Espresso escribe pruebas en función del marco de trabajo de pruebas Espresso, una API en AndroidX Test. La API de Espresso te incentiva a crear pruebas de IU concisas y confiables basadas en las acciones de los usuarios. Esta estructura indica expectativas, interacciones y aserciones sin acceder directamente a las actividades y las vistas subyacentes de la app, lo que permite evitar puntos débiles en las pruebas y optimizar su velocidad de ejecución.

Cómo desactivar animaciones en tu dispositivo de prueba

Antes de usar la grabadora de pruebas Espresso, asegúrate de desactivar las animaciones en tu dispositivo de prueba para evitar resultados inesperados. Sigue las instrucciones de "Cómo configurar Espresso" de la página Cómo probar la IU de una app, pero ten en cuenta que no necesitas configurar de forma manual una referencia de dependencia a la biblioteca Espresso, ya que la grabadora de pruebas lo hace automáticamente cuando guardas una grabación. Solo debes realizar estos pasos una vez para un proyecto determinado.

Cómo grabar una prueba Espresso

Las pruebas Espresso consisten en dos componentes principales: las interacciones y las aserciones de la IU en elementos View. Las interacciones de la IU incluyen acciones, como presionar y escribir, que una persona puede usar para interactuar con tu app. Las aserciones verifican la existencia o el contenido de elementos visuales en la pantalla. Por ejemplo, una prueba Espresso para la app de Prueba de notas podría incluir interacciones con la IU que requieran hacer clic en un botón y escribir una nota nueva, pero usaría aserciones para verificar la existencia del botón y del contenido de la nota.

En esta sección, repasaremos cómo usar la grabadora de pruebas Espresso para crear esos componentes de prueba y cómo guardar tu grabación lista para generar la prueba.

Cómo grabar interacciones de la IU

Para empezar a grabar una prueba con la grabadora de pruebas Espresso, sigue estos pasos:

  1. Haz clic en Run > Record Espresso Test.
  2. En la ventana Select Deployment Target, elige el dispositivo en el que desees grabar la prueba. Si es necesario, crea un Dispositivo virtual de Android nuevo. Haz clic en OK.
  3. La grabadora de pruebas Espresso activará una compilación de tu proyecto y la app deberá instalarse e iniciarse para que la grabadora te permita interactuar con ella. Una vez que se inicie la app, aparecerá la ventana Record Your Test (Graba tu prueba) y, como todavía no habrás interactuado con el dispositivo, en el panel principal se mostrará el mensaje “No events recorded yet” (Sin eventos grabados). Interactúa con el dispositivo para comenzar a registrar eventos, como acciones "tap" y "type".

Nota: Antes de empezar a registrar interacciones, es posible que veas en el dispositivo un diálogo con la leyenda "Waiting for Debugger" (Esperando el depurador) o "Attaching Debugger" (Adjuntando el depurador). La grabadora de pruebas Espresso usa el depurador para registrar eventos de la IU. Cuando se adjunte el depurador, se cerrará automáticamente el diálogo. No presiones Force Close (Forzar cierre).

Las interacciones grabadas aparecerán en el panel principal de la ventana Record Your Test, como se muestra a continuación en la figura 1. Cuando ejecutes la prueba, la prueba Espresso intentará ejecutar estas acciones en el mismo orden.

Figura 1: Ventana Record Your Test con interacciones registradas con la IU

Cómo agregar aserciones para verificar elementos de la IU

Las aserciones verifican la existencia o el contenido de un elemento View mediante tres tipos principales:

  • text is: Comprueba el contenido de texto del elemento View seleccionado.
  • exists: Comprueba que el elemento View esté presente en la jerarquía que se visualiza actualmente en la pantalla.
  • does not exist: Comprueba que el elemento View no esté presente en la jerarquía actual.

Para agregar una aserción a tu prueba, sigue estos pasos:

  1. Haz clic en Add Assertion (Agregar aserción). Aparecerá un diálogo Screen Capture (Captura de pantalla) mientras Espresso obtiene la jerarquía de la IU y otros datos sobre el estado actual de la app. Se cerrará automáticamente el diálogo una vez que Espresso obtenga la captura de pantalla.
  2. En un panel a la derecha de la ventana Record Your Test, aparecerá el diseño de la pantalla actual. Para seleccionar un elemento View en el que se creará una aserción, haz clic en el elemento en la captura de pantalla o usa el primer menú desplegable del cuadro Edit assertion (Editar aserción) que aparecerá en la parte inferior de la ventana. El objeto View seleccionado se destacará en un cuadro rojo.
  3. Selecciona la aserción que desees usar en el segundo menú desplegable del cuadro Edit assertion. Espresso completará el menú con aserciones válidas para el elemento View seleccionado.
    • Si seleccionas la aserción "text is", Espresso insertará de forma automática el texto que se encuentre dentro del elemento View seleccionado. Podrás editar el texto para que coincida con tu aserción elegida usando el campo de texto del cuadro Edit assertion.
  4. Haz clic en Save and Add Another (Guardar y agregar otra) para crear otra aserción o en Save Assertion (Guardar aserción) para cerrar los paneles de aserciones.

En la captura de pantalla de la figura 2, se muestra la creación de una aserción "text is" para verificar que el título de la nota sea "Happy Testing!" ("¡Éxitos con la prueba!"):

Figura 2: Cuadro Edit assertion después de seleccionar un elemento View (en rojo)

Mientras creas una aserción, puedes continuar interactuando con tu app, incluso con los paneles de aserciones aún abiertos en la ventana Record Your Test. La grabadora de pruebas Espresso seguirá registrando tus acciones, pero la aserción que edites aparecerá antes de estas interacciones una vez que se guarde. La captura de pantalla para la aserción también conservará el diseño que tenía el dispositivo o el emulador cuando presionaste el botón Add Assertion.

Cómo guardar una grabación

Una vez que termines de interactuar con tu app y agregar inserciones, aplica los siguientes pasos para guardar tu grabación y generar la prueba Espresso:

  1. Haz clic en Complete Recording (Completar grabación). Aparecerá la ventana Pick a test class name for your test (Elige un nombre de clase de prueba para tu prueba).
  2. La grabadora de pruebas Espresso asignará a tu prueba un nombre único dentro de su paquete según el nombre de la actividad que se haya iniciado. Si deseas cambiar el nombre sugerido, usa el campo de texto Test class name (Nombre de clase de prueba). Haz clic en Save.
    • Si no agregaste dependencias de Espresso a tu app, cuando intentes guardar tu prueba, aparecerá el diálogo Missing Espresso dependencies (Faltan dependencias de Espresso). Haz clic en Yes (Sí) para agregar automáticamente las dependencias a tu archivo build.gradle.
  3. Se abrirá automáticamente el archivo después de que lo genere la Grabadora de pruebas Espresso, y Android Studio mostrará la clase de prueba conforme a lo seleccionado en la ventana Project del IDE.
    • La ubicación en la que se guarde la prueba dependerá de la ubicación de la raíz de tu prueba de instrumentación y del nombre del paquete de la actividad que se haya iniciado. Por ejemplo, las pruebas para la app de Prueba de notas se guardan en la carpeta src > androidTest > java > com.example.username.appname del módulo de la app en el que grabaste la prueba.

Cómo ejecutar una prueba Espresso de forma local

Para ejecutar una prueba Espresso, usa la ventana Project  ubicada a la izquierda del IDE de Android Studio:

  1. Abre la carpeta del módulo de la app elegida y dirígete a la prueba que desees ejecutar. La ubicación de la raíz de tu prueba de instrumentación y el nombre del paquete de la actividad que se haya iniciado determinarán cuál será la ubicación de la prueba. En los siguientes ejemplos, se muestra el destino en el que se guardaría una prueba para la app de Prueba de notas:
    • Si usas la vista de Android en la ventana, dirígete a java > com.example.username.appname (androidTest).
    • Si usas la vista Project dentro de la ventana, dirígete a src > androidTest > java > com.example.username.appname en la carpeta del módulo.
  2. Haz clic con el botón derecho en la prueba y selecciona Run ‘testName.’
    • Como alternativa, puedes abrir el archivo de prueba y hacer clic con el botón derecho en la clase o el método de prueba generados. Obtén más información sobre cómo ejecutar pruebas en la página Cómo probar tu app.
  3. En la ventana Select Deployment Target, elige el dispositivo en el que quieras ejecutar la prueba. Si es necesario, crea un Dispositivo virtual de Android nuevo. Haz clic en OK.

Controla el progreso de tu prueba en la ventana Run (Ejecutar), en la parte inferior del IDE. Android Studio ejecuta una compilación completa de tu proyecto y abre una pestaña con el nombre de la prueba en la ventana Run, como se muestra en la figura 3. En esa pestaña, podrás comprobar si la prueba es exitosa o no, además del tiempo que se necesitó para ejecutarla. Cuando finalice la prueba, en la pestaña aparecerá el mensaje "Tests ran to completion" (Pruebas completadas).

Figura 3. Respuesta de ejemplo en la ventana Run después de la ejecución de una prueba Espresso a nivel local

Para obtener más información sobre cómo escribir configuraciones de ejecución de pruebas, lee la sección "Cómo definir una configuración de pruebas para una clase o un método" en Cómo crear y editar configuraciones de ejecución y depuración.

Cómo ejecutar una prueba Espresso con Firebase Test Lab for Android

Puedes usar pruebas generadas por la Grabadora de pruebas Espresso con Firebase Test Lab para probar tu app en la nube con cientos de configuraciones de dispositivos. Puedes probar tu app sin cargo con Test Lab dentro de la cuota diaria gratuita del plan Spark. Para ejecutar pruebas Espresso con Firebase Test Lab, crea un proyecto de Firebase para tu app y sigue las instrucciones a fin de ejecutar tus pruebas con Firebase Test Lab de Android Studio.

Figura 4. Respuesta de ejemplo en la ventana Run después de ejecutar una prueba con Firebase Test Lab en varios dispositivos