TDD desde Cero - IWT2

23
TDD desde Cero Cucumber para BDD con Java www.iwt2.org [email protected]

Transcript of TDD desde Cero - IWT2

Page 1: TDD desde Cero - IWT2

TDD desde Cero

Cucumber para BDD con Java

[email protected]

Page 2: TDD desde Cero - IWT2

2

• Mostrar los conceptos fundamentales de Cucumber.

• Diseccionar y entender un ejemplo de BDD con Cucumber.

Objetivos

Objetivos

Page 3: TDD desde Cero - IWT2

3

1. Empezando con Cucumber

2. Conceptos básicos3. Un ejemplo paso a

paso.4. Para terminar

Índice

Índice

Page 4: TDD desde Cero - IWT2

4

Empezando con Cucumber

Page 5: TDD desde Cero - IWT2

Empezando con Cucumber

• Cucumber es una herramienta escriba en Ruby.

• Sin embargo en este módulo veremos la adaptación hecha para lenguaje Java.

• Para instalarlo es necesario descargar varios ficheros de esta URL: http://repo1.maven.org/maven2/info/cukes/

Page 6: TDD desde Cero - IWT2

Empezando con Cucumber

• Los ficheros básicos necesarios son cucumber-core.jar y cucumber-java.jar

• También descargaremos el módulo cucumber-junit para conectar Cucumber con JUnit.

• También es necesario descargar Gherkin para procesar el lenguaje de los escenarios

Page 7: TDD desde Cero - IWT2

Empezando con Cucumber

• Podemos encontrar varios ejemplos en el repositorio de github aquí: https://github.com/cucumber/cucumber-jvm

• Para comprobar que tenemos Cucumber bien instalado vamos a probar el ejemplo helloworld.

Page 8: TDD desde Cero - IWT2

Empezando con Cucumber

• creamos un proyecto, descargar y añadir al classpath los jaranteriores y añadir el paquete de código que contiene los ficheros.

• Necesitaremos 4archivos: Hello.java (con el código a probar), HelloStepdefs.java (con el código de los pasos del escenario), RunCukesTest.java (lanzador de la prueba) y helloworld.feature (con los escenarios a probar)

Hello World

Page 9: TDD desde Cero - IWT2

Empezando con Cucumber

• Para ejecutar las pruebas con Junit modificaremos las opciones para que los use de output.

• Si todo ha ido bien no tendremos ningún error en los ficheros Java al importar el código.

• Al ejecutar como una prueba Junit el archivo RunCukes, veremos que las pruebas pasan con éxito.

Page 10: TDD desde Cero - IWT2

10

Conceptos básicos

Page 11: TDD desde Cero - IWT2

Conceptos básicos

• Cucumber utiliza la sintaxis Gherkin para definir los escenarios.

• Esta sintaxis es muy similar a la sintaxis de otra herramientas como Jbehave o Behave.

• En Cucumber es posible escribir los escenarios en distintos idiomas.

• Cucumber trae las etiquetas necesarias para relacionar los pasos con el código en muchos idiomas.

• Por compatibilidad con otras herramientas todos los ejemplos y ejercicios los haremos en inglés

Page 12: TDD desde Cero - IWT2

Conceptos básicos

Escenario con un ejemplo concreto de uso.

Conjunto de valores. El escenarios e ejecutará una vez por cada fila de valores.

}

}

Page 13: TDD desde Cero - IWT2

13

Un ejemplo paso a paso

Page 14: TDD desde Cero - IWT2

14

• Veamos otro ejemplo de: https://github.com/cucumber/cucumber-jvm

• El ejemplo Java-Calcularor.

• En este caso reharemos el ejemplo desde cero.

Ejemplo paso a paso

Page 15: TDD desde Cero - IWT2

15

Ejemplo paso a paso

Comenzamos implementando los primeros pasos

Escenarios con ejemplos de uso

Page 16: TDD desde Cero - IWT2

16

Ejemplo paso a paso

Empezamos a implementar los pasos y comprobamos que la prueba falla.

Pasos. Código.

Fallo.

Page 17: TDD desde Cero - IWT2

17

Ejemplo paso a paso

Completamos la prueba de implementamos el código para que funcione.

Código.

Page 18: TDD desde Cero - IWT2

18

Ejemplo paso a paso

Vamos a añadir la resta.Comprobamos que la prueba

falla

Page 19: TDD desde Cero - IWT2

19

Ejemplo paso a paso

Completamos la prueba de implementamos el código para que funcione.

Page 20: TDD desde Cero - IWT2

Ejemplo paso a paso

• Hay más pruebas que desarrollar para mejorar el código.– Más de dos valores– Secuencias de varios operandos– Operador sin operandos– Etc.

• También empiezan a aparecer posibles refactorizaciones.– Aplicar el patrón Strategy para los operadores

Page 21: TDD desde Cero - IWT2

21

Para terminar

Page 22: TDD desde Cero - IWT2

22

• The Secret Ninja Cucumber Scrolls (librogratuito)

• http://cuke4ninja.com/• Cucumber y C++• http://ociotec.com/bdd

-c-en-windows-con-boost-y-cucumber-cpp/

• Página oficial: http://cukes.info/

Enlaces y referencias

Para saber más

Page 23: TDD desde Cero - IWT2

23

Actividades

Actividades

• Prueba a implementar alguno de los ejemplos de Cucumber en otra de las herramientas de ATDD / BDD que hemos visto.

• También puedes probar a desarrollar alguno de los ejemplos de otras herramientas en Cucumber.