Introducción a test parametrizados con JUnit 4

1
5685

En este tutorial vamos a ver cómo se pueden emplear las capacidades de JUnit 4 para crear tests con asserts que se obtienen de un conjunto de datos.

Índice de contenidos

1. Introducción

En ocasiones en nuestros test realizan múltiples comprobaciones dentro de un mismo test, simplemente para probar diferentes casos lo cual nos lleva a repetir código dentro de nuestros test, por ejemplo:

MultiplyTest.java

Como podemos comprobar en este caso, puede ser tedioso y repetitivo comprobar todos los casos, ante esto, JUnit nos proporciona la característica de test parametrizados.

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 X El Capitan Versión 10.11.2
  • Entorno de desarrollo: ItelliJ Idea Comunity
  • JUnit 4.12

3. Qué son y cómo funcionan los test parametrizados en JUnit

Para construir test parametrizados, JUnit, utiliza un custom runner que es Parametrized, que nos permite definir los parámetros de varias ejecuciones de un solo test, veamos cómo funciona:

MultiplyTest.java

¿Bien?¿Alguna duda? Imagino que sí, así que vayamos por partes.
Como vemos al principio tenemos la linea:

En esta línea lo que indicamos es que vamos a utilizar el runner de Parameterized, que se encargará de ejecutar el test las veces necesarias dependiendo del número de parámetros configurado. Cosa que vamos a hacer en el siguiente bloque:

La anotación Parameters indica cual es el método que nos va a devolver el conjunto de parámetros a utilizar por el runner. En nuestro ejemplo, un colección de arrays de objetos, que se utilizarán para construir el test cada vez.

Por supuesto ahora lo que necesitamos es un constructor que permita ser inicializado con los objetos que tenemos en cada elemento de la colección

Finalmente, se ejecutará el test como siempre hemos hecho utilizando los datos que hemos recogido en el constructor.

4. ¿Constructor? Inyectando los parámetros.

JUnit, también nos permite en vez de utilizar el constructor, inyectar los parámetros en propiedades de la clase test mediante la anotación @Parameter, para ello, simplemente omitimos el constructor y anotamos nuestras propiedades con @Parameter (deberán ser propiedades públicas).

5. ¿Con qué caso está trabajando nuestro test?

Para poder identificar de una manera sencilla qué test se está ejecutando en cada momento, JUnit no da la posibilidad de de dar un nombre a la ejecución utilizando la propiedad “name” de la anotación @Parameters, por ejemplo:

Donde {index} nos indica la posición del parámetro actual y {0}, {1} , etc… nos indica el valor del parámetro dentro del array de objetos que estamos pasando a la ejecución del test.
En nuestro ejemplo esto nos daría una salida tal que:

resultado_test

6. Conclusiones

Como hemos podido comprobar en este sencillo tutorial, JUnit, nos proporciona una variedad notable de herramientas para facilitar nuestros test, en este caso con la incursión de un runner que nos ayudará a evitar los test repetitivos con parámetros.

7. Referencias

  • Parametrized API reference.

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here