Aunque se tiende a presuponer que las pruebas unitarias son un producto natural de la propia construcción del software realmente es una práctica que hay que cuidar, al igual que una arquitectura limpia o unos requisitos alineados con el valor esperado. Históricamente el desarrollo de pruebas unitarias siempre ha sido una labor tediosa, poco gratificante y poco reconocida. Gracias a Spock esto está cambiando y en este artículo te lo explicamos.
Spock es un framework de testing para probar aplicaciones Java y Groovy que hace que escribir tests no sea tan complejo, aburrido y verboso como con otros frameworks de pruebas tradicionales.
Gracias a su expresivo DSL y a la potencia del lenguaje, Groovy hace que podamos escribir tests de una manera muy sencilla, clara y fácilmente legible incluso por los torpes de negocio :-). Está inspirado en otros frameworks de pruebas, lenguajes y tecnologías, pero dándoles una vuelta de tuerca más y quedándose con lo mejor de cada casa:
1. Compatibilidad:
Spock es compatible con JUnit, por lo que lo podemos integrar fácilmente con nuestras herramientas estándar que estemos usando actualmente como nuestro IDE (Eclipse, Netbeans), nuestro entorno de integración continua (Jenkins, Bamboo), o con nuestra herramienta de gestión y construcción de proyectos (Maven, Gradle).
2. Test descriptivos:
Se acabaron los nombres de test crípticos en CamelCase díficiles de leer. Con Spock escribimos frases descriptivas de lo que hace el test gracias a su sintaxis estilo BDD: given – when – then.
3. La potencia de Groovy:
facilita el manejo de estructuras de datos como listas y mapas con muy muy poco código. En Java nos llevaría unas cuantas líneas de código extra, haciendo nuestros test más complejos y menos legibles.
4. Data Driven Tests:
Facilidad para testear un fragmento de código con muchos valores distintos (tablas, listas, mapas… o cualquier otra estructura de datos que sea «iterable»).
5. Power asserts:
Gracias a ellos, en la ejecución de cada test se informa de manera muy visual los valores de cómo se ha evaluado el assert paso a paso. Esto nos evita llenar nuestros tests con logs o tener que depurarlos para ver qué está pasando.
6. Test doubles:
Spock también nos facilita la creación de test dobles sin necesidad de incluir librerías adicionales (como Mockito en el caso de JUnit) para poder crear mocks en nuestros tests de forma muy sencilla.
En resumen, Pruebas Java con Spock nos facilita la aproximación hacia las pruebas de software. Y de todo ello nos habló Iván López (@ilopmar) en la pasada charla 101 Panel Tech Days. Aunque la sesión fue sobre Spock, Iván no puede, ni quiere, esconder su amor por Groovy. Una pasión contagiosa que anima a «darle una oportunidad» al desarrollo de software con Groovy. Sin duda, en Panel Sistemas ya ha conseguido colocarlo en el «ToDo» de varios de los asistentes siendo el desarrollo de pruebas unitarias de software un excelente punto de partida.
Os dejamos aquí el vídeo de su charla, en el que nos muestra Pruebas Java con Spock o por qué apoyarse en Spock para probar código Java es una apuesta ganadora. La solvencia con la que Iván navega entre los ejemplos prácticos que utiliza es una evidencia más de la mejora en productividad a la que debemos aspirar con Spock en nuestra caja de herramientas.
Pruebas Java con Spock
Si deseas profundizar más sobre Spock aquí tienes los ejemplos de la sesión y algunos enlaces de interés:
- Slides del #101PanelTechDays: http://www.slideshare.net/ilopmar/101-panel-tech-days-spock-o-por-qu-deberas-utilizarlo-para-testear-tu-cdigo-java
- Código del #101PanelTechDays en Github: https://github.com/ilopmar/101panel-spock
- Web oficial de Spock: http://spockframework.org
- Documentación oficial de Spock: http://spockframework.org/spock/docs
- T3chFest 2016 – Iván López – De Java a Groovy: ¡Hora de Aventuras!
0 comentarios