Featured image of post 046 - Android: Proyecto Android Barista (II).

046 - Android: Proyecto Android Barista (II).

¡Hola a todos!

Continuamos en esta entrada con el proyecto Android Barista, en esta entrada hablaremos de cómo desarrollar test con Barista en un proyecto de Android. ¡Comenzamos!


URL Repositorio: https://github.com/estefafdez/AndroidBaristaProject


11

En esta sección hablaremos de cómo hacer pruebas automáticas de UI en Android usando Barista.

¿Qué es Barista?

Como comentamos en la entrada anterior, Barista es una herramienta basada en Espresso para realizar test automáticos en Android a más alto nivel que con Espresso.

En Barista, hay una serie de acciones ya definidas como por ejemplo: hacer click en un botón, hacer scroll en una lista, seleccionar un item, pasar de página… que conociendo el id del elemento, podremos usarlas para interactuar con él de forma sencilla.

También tiene acciones de assert para hacer diferentes comprobaciones como si un elemento está visible, tiene un texto concreto, está activado…

Es lo más parecido a Appium que podemos encontrar pero de forma nativa en Android.

Más info sobre Barista: https://github.com/SchibstedSpain/Barista

¿Cómo empezar?

Requisitos mínimos:

Para comenzar con Barista debemos comenzar con incluir el repositorio de Google en Maven en el build.gradle ya que es obligatorio para Espresso 3. Nos vamos al build.gradle del proyecto y añadimos:

1
2
3
4
5
6
allprojects {
    repositories {
        jcenter()
        maven { url "https://maven.google.com" }
    }
}

Captura de pantalla 2018-11-04 a las 14.37.59

A continuación, importamos Barista como una dependencia de testing en el build.gradle de la app:

1
2
3
androidTestCompile('com.schibsted.spain:barista:2.7.0') {
    exclude group: 'com.android.support'
}

Captura de pantalla 2018-11-04 a las 14.39.12

Si necesitamos otro paquete de Espresso podemos añadirlo al proyecto sin ningún problema.

Creando nuestro primer test:

Cuando tenemos importadas las dependencias y el repositorio, nos vamos a app/src/androidTest y creamos una clase .java para nuestros test, a la que llamaremos BaristaTest.java. En esta clase debemos añadir:

La regla de barista:

1
2
@Rule
public BaristaRule<MainActivity> baristaRule = BaristaRule.create(MainActivity.class);

Esta regla hace varias cosas por defecto:

  • Si tenemos definidos fraky tests, realiza 10 intentos de cada uno.
  • Por defecto el lanzador de actividades automáticas está a falso.
  • El modo de inicio de touch está a true.
  • Borra las preferencias
  • Borra los datos
  • Limpia los ficheros.

TestName:

Añadimos también el método TestName de jUnit para usarlo en el log y saber qué test estamos ejecutando.

1
TestName name = new TestName();

Método setUp():

Antes de comenzar a crear los test necesitamos un método que se realice siempre antes de todos los test y que lance la Activity principal del proyecto.

Para no tener que repetir esta línea en cada test, usaremos la anotación @Before de jUnit:

1
2
3
4
5
@Before
public void setUp(){
    Log.i("Info","[START] - Launch Test: " + name.getMethodName());
    baristaRule.launchActivity();
}

En este método añadimos en el log el nombre del test que estamos ejecutando y lanzamos la Activity principal del proyecto.

Método tearDown():

Además de definir un método al inicio, debemos definir otro método fin para ejecutarse siempre después de cada test.

En este método podemos incluir todas las acciones que se realicen siempre al finalizar los test, por ahora, sólo indicaremos en el log el test que ha terminado.

Usaremos para ello la anotación @After de jUnit:

1
2
3
4
@After
public void tearDown(){
    Log.i("Info", "[FINISH] - Test: " + name.getMethodName());
}

Creando nuestro primer test:

Cuando tenemos todo esto definido, pasamos a crear nuestro primer test donde comprobaremos si se muestra un botón:

1
2
3
4
5
@Test
public void testTextoIsDisplayed(){
    BaristaVisibilityAssertions.assertDisplayed(R.id.texto);
    Log.i("Info", "The element text is displayed.");
}

Siempre debemos empezar con la anotación @Test antes de escribir el test. Es una buena práctica escribir test+NombreTest para nombrar los test que creamos.

En este test, usamos el método assertDisplayed dentro de BaristaVisibilityAssertions donde en el parámetro indicamos el id del botón que queremos comprobar.

Si esta comprobación es correcta, se escribirá en el log que el botón1 se muestra.

Ejecutando nuestro primer test.

Una vez que tenemos el test creado, pasaremos a ejecutarlo, para ello debemos poner el ratón encima del test, hacemos click con el botón derecho y le damos a Run:

Captura de pantalla 2018-11-04 a las 14.43.57

El emulador se abrirá y el test comenzará a ejecutarse. Una vez que termine, podremos ver los resultados:

Captura de pantalla 2018-11-04 a las 14.44.39

Y así podemos hacer test usando Barista de forma sencilla.

En la próxima entrada seguiremos hablando sobre pruebas móviles sobre Android y hablaremos de Appium y cómo hacer pruebas con esta aplicación.

¡Nos leemos en la siguiente entrada!