Hola amigos En previsión del inicio del curso
Mobile QA Engineer , queremos compartir con usted una traducción de material interesante.

¿Qué es el espresso?
No, esta no es una bebida que bebes todos los días para alegrarte. Espresso es un marco de prueba de código abierto desarrollado por Google. Le permite realizar pruebas complejas de interfaz de usuario en un dispositivo o emulador real. ¿Tomará tiempo comenzar a escribir pruebas complejas para Android?
Posiblemente Pero nada le impide dar el primer paso y aprender a escribir casos de prueba simples para Android usando el marco Espresso en este momento.
¿Cuéntanos más sobre la automatización?
Por supuesto La automatización es una forma de acelerar las pruebas, hacerlas más eficientes y escalables. Las pruebas manuales son muy importantes, pero tener pruebas automatizadas es una opción mucho mejor en el futuro.
Básicamente hay dos tipos de marcos de prueba:
- Marcos que no necesitan acceso al código fuente y que no están integrados como parte del proyecto. Por ejemplo, WebDriver, Appium, QTP .
- Marcos que necesitan acceso al código fuente. Por ejemplo, Espresso, KIF (Keep It Functional) .
Espresso es un marco que necesita acceso al código fuente, por lo que para la automatización necesitamos acceso al código del proyecto. Como necesitamos un proyecto para trabajar, ¡creémoslo!
Componentes principales de espresso
Hay tres tipos de métodos disponibles en Espresso:
- ViewMatchers : le permite encontrar un objeto en la jerarquía actual de vistas
- ViewAssertions : le permite verificar el estado del objeto y confirmar que el estado cumple con los criterios
- ViewActions : estos métodos le permiten realizar diversas acciones con objetos.
Profundicemos y veamos cómo funciona todo con un ejemplo real.
Crea una aplicación de automatización simple
Lo primero que debemos hacer es crear una aplicación que automaticemos. Creemos un proyecto en Android Studio. Para esto, por supuesto, necesita Android Studio instalado en su computadora.
1. Abra Android Studio y cree una Actividad de navegación inferior.
Android Studio. Crear nueva ventana de proyecto2. Asigne un nombre al proyecto y seleccione un lenguaje de programación.
Android Studio. Nombre del proyecto3. Vaya a la carpeta androidTest
Android Studio. Prueba instrumentalComo puede ver, solo se escribe una prueba allí, y esta no es una prueba de IU, sino una prueba JUnit.
Ahora necesitamos agregar una prueba de interfaz de usuario simple. Para hacer esto, primero cree una regla para abrir
MainActivity .
Agreguemos una importación de anotación de regla
JUnit :
import org.junit.Rule;
Lo siguiente que debe hacer es agregar la siguiente línea de código para complementar la anotación
RunWith :
@Rule public ActivityTestRule<MainActivity> activityActivityTestRule = new ActivityTestRule<>(MainActivity.class);

Ahora vemos que
ActivityTestRule está resaltado en rojo. Esto significa que necesitamos importar la función
ActivityTestRule . Pero primero, necesitamos agregar una biblioteca que pueda hacer esto. En pocas palabras, para esta tarea necesitamos la ayuda de
Gradle , un sistema de automatización de ensamblaje creado específicamente para este propósito.
Vayamos al archivo de configuración de
Gradle y agreguemos esta biblioteca. Abra un archivo llamado
build.gradle (Módulo: aplicación) y agregue la siguiente línea:
androidTestImplementation 'com.android.support.test:rules:1.0.2'
Android Studio. Añadir dependencia.Después de agregar, debe hacer clic en el botón para sincronizar el proyecto y luego regresar al archivo con la implementación de prueba.
Ahora que se ha agregado la biblioteca, el siguiente paso es importarla al archivo con la prueba instrumental:
import androidx.test.rule.ActivityTestRule;
Android Studio. Importar ActivityTestRule.Ok, ahora estamos listos para agregar nuestra primera prueba. Ingrese este código en
ExampleInstrumentedTest :
@Test public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); }
Android Studio. Agregar una prueba e importar elementos adicionalesPara nuestra prueba, necesitamos importar elementos adicionales antes de que comience a funcionar. ¡Haga clic en
el botón Aceptar y, de hecho, estamos listos para lanzar nuestra prueba!
Ejecución de pruebas de espresso
Haga clic derecho en nuestra prueba a la izquierda y seleccione
"Ejecutar ejemplo de prueba instrumentada" .

Dado que esta es una
prueba de IU , no una prueba
unitaria , veremos una ventana con una opción de dispositivo en el que nos gustaría ejecutarla. Ya tengo "Nexus 5X" como dispositivo, así que solo necesito seleccionarlo.

En su caso, si nunca ha implementado un proyecto de Android, seleccione su dispositivo Android real o haga clic en
"Crear nuevo dispositivo virtual" y cree un nuevo dispositivo emulado para ejecutar las pruebas. Este puede ser cualquier dispositivo de la lista en la que le gustaría ejecutar pruebas.
¡Haz clic en
Aceptar y prepárate para ver la magia!
Android Studio. Resultados de la pruebaComo puede ver, tenemos un conjunto de dos pruebas aprobadas: la prueba unitaria, que ya estaba allí después de que se creó el proyecto, y nuestra prueba
clickHomeButton , que acabamos de escribir.
Android Studio. La prueba completada.Como su nombre lo indica, solo hicimos clic en un botón en la barra de navegación inferior, que se llama
"navigation_home" en la jerarquía
MainActivity .
Analicemos lo que hicimos en esta cadena de métodos:
public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); }
- 1. Llame a onView . Este método es un método de tipo ViewMatchers . Encontramos un objeto en nuestra Actividad para hacer algo.
- 2. A continuación, llamamos a realizar (clic ()) . Este método es un método de tipo ViewActions . Indicamos la acción específica que debe realizarse en este caso: hacer un clic (clic). Hay muchos más métodos de acción disponibles en Espresso, por ejemplo:
- 3. Lo último que debemos hacer es confirmar que la acción que realizamos realmente coincide con nuestros criterios, y para esto ejecutamos el método check (isDisplayed ()) , que es un método de tipo ViewAssertions . En este caso, verificamos que este objeto (vista) se haya mostrado en la pantalla después de que se realizó la acción de hacer clic.
Jerarquía de vista de Android
Estimado lector, espero haber podido explicarle cómo escribir
pruebas básicas de
IU para Android con Espresso.
Sin embargo, probablemente no sea tan simple entender qué sucedió exactamente aquí si no sabe dónde se encuentran todos estos botones y de dónde provienen. Para averiguarlo, debemos ir a la carpeta
"res" en el lado izquierdo, abrir la carpeta
"menú" y seleccionar
"bottom_nav_menu.xml" .
Esto es lo que veremos allí:
Android Studio. Jerarquía de presentación del menú de navegación inferior.Como puede ver, esta es la línea que asigna un nombre al elemento del menú:
android:id="@+id/navigation_home"
Eso es lo que usamos en nuestro código para ejecutar las pruebas. También hay botones de menú
"navigation_dashboard" y
"navigation_notifications" , disponibles en la parte inferior, así que continuemos y usémoslos en nuestras pruebas.
Más pruebas de espresso
Necesitamos volver al archivo
ExampleInstrumentedTest y agregar un par de funciones de prueba más:
@Test public void clickButtonDashboard(){ onView(withId(R.id.navigation_dashboard)).perform(click()).check(matches(isDisplayed())); } @Test public void clickButtonNotification(){ onView(withId(R.id.navigation_notifications)).perform(click()).check(matches(isDisplayed())); }
Lo único que agregamos fue verificar varios elementos más del menú:
"navigation_dashboard" y
"navigation_notifications" .
Android Studio. Agrega dos pruebas más.Por supuesto, estas pruebas podrían simplificarse aún más, pero para mostrar cómo funciona todo esto, supongamos que son perfectamente adecuadas para nuestros propósitos.
Continuemos y ejecutemos estas pruebas nuevamente. Haz clic en
el botón
Ejecutar .
Android Studio. Resultados de la pruebaLas 4 pruebas pasaron. Todas las vistas se encontraron, se hicieron clic y se confirmaron en la jerarquía de vistas.
Conclusión
Espresso es una solución poderosa para ejecutar pruebas de IU. Ahora que sabe cómo se crean, está listo para escribir pruebas mucho más potentes y complejas.
Que tengas una buena prueba!