Primeros Pasos con Serenity y Cucumber

Índice de contenidos

1. Introducción

Serenity es una herramienta que nos facilita hacer BDD centralizando los test de nuestra aplicación. El reporte generado nos indica el estado funcional de nuestra aplicación con gran detalle y sirve también como documentación viva. Nos ofrece muchas posibilidades, pero en este tutorial nos vamos a centrar en un reporte con Cucumber para la definición de escenarios y su implementación.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro Retina 15′ (2.5 Ghz Intel Core I7, 16GB DDR3).
  • Sistema Operativo: Mac OS Sierra
  • Entorno de desarrollo: Intellij Idea CE
  • Java 1.8
  • Apache Maven 3.5.0

3. Preparar el proyecto

Vamos a usar Serenity con Cucumber. Para ello, incluimos la dependencia de Serenity-cucumber. Si veis las dependencias, incluye el core de serenity.

pom.xml


También incluimos el failsafe plugin para que ejecute los test en la fase de verificación y el plugin de serenity para generar el reporte en la fase justo después de ejecutar los tests (post-integration-tests).

Serenity incluye un fichero de propiedades llamado serenity.properties y que incluimos en el raíz de nuestro proyecto. En él podemos definir muchas variables que utiliza serenity y agregar nuestras propiedades. Podéis consultar todas las que existen aquí.
Como ejemplo, vamos a incluir el título del reporte:

4. Declaración de un escenario con Cucumber

Creamos un fichero con extensión .feature en los resources de la parte de test del proyecto maven y describimos un escenario:

Creamos la clase que implemente los pasos del escenario.


    Creamos el runner que va a ejectuar los tests:
  • @RunWith : el runner de cucumber con serenity
  • @CucumberOptions: es propio de cucumber. Tiene varias opciones de configuración, pero sólo necesitamos asociarle la ruta de las features. Pueden ser más de una feature o carpetas:
  • Los test definidos en este runner se pueden ejecutar desde la misma clase:



    5. Generar el reporte

    Nota:Todo el código de ejemplo generado para mostrar estos test, lo podéis consultar en github.

    Anteriormente, en el tercer paso, incluimos un RunTest.java, que es el runner que acabamos de definir, para ser ejecutado como test de integración. Al invocar “mvn verify”, ejecutará el runner y generará el reporte de serenity.
    Por defecto lo crea en target/site/serenity.


    Ahí genera el fichero index.html que contiene el reporte.


    En este ejemplo hemos definido varios escenarios de como cenan los niños pequeños según sus gustos o sus capacidades. Pulsando en cada test, se ve en detalle la ejecución de cada test.
    Por ejemplo, vemos que Sofía cuando cena pescado con patatas, parece que no le gusta demasiado.


    O Jorge, que la leche con cereales no deja nada, le encanta.


    Aunque parece que todavía no es su momento para tomar tortilla, y hay un compromiso de hacerlo próximamente:

    6. Conclusiones

    Serenity nos ayuda a implementar los escenarios y tener un reporte del estado de nuestra aplicación. Tiene una buena integración con cucumber y es bastante sencilla tanto la configuración inicial como la implementación. Esto es sólo el principio, iremos conociendo qué otras posibilidades nos ofrece Serenity.

    7. Referencias