taller de unit testing y tdd en java: parte 1

25
Taller de Unit Testing y TDD en Java Parte 1 Jano González Desarrollador

Upload: jano-gonzalez

Post on 13-Jan-2015

5.606 views

Category:

Technology


1 download

DESCRIPTION

Primera parte del taller de Unit Testing y TDD en Java, usando JUnit 4. El código para el taller está en https://github.com/janogonzalez/junit-lessons

TRANSCRIPT

Page 1: Taller de Unit Testing y TDD en Java: Parte 1

Taller de Unit Testingy TDD en JavaParte 1

Jano GonzálezDesarrollador

Page 2: Taller de Unit Testing y TDD en Java: Parte 1

Parte 1

● Iremos desde la práctica hacia la teoría:● Uso de JUnit 4● Matchers básicos● Ejemplo simple (demasiado?) de TDD

Page 3: Taller de Unit Testing y TDD en Java: Parte 1

Parte 2

● Próximo L&B● Iremos desde la práctica hacia la teoría:

● Otros matchers ● Mock objects● Ejemplo de TDD● Cómo hacer buenos tests

Page 4: Taller de Unit Testing y TDD en Java: Parte 1

Parte N

● Si les interesa podemos hacer más talleres...

Page 5: Taller de Unit Testing y TDD en Java: Parte 1

¡A practicar!

Page 6: Taller de Unit Testing y TDD en Java: Parte 1

https://github.com/janogonzalez/junit-lessons

Page 7: Taller de Unit Testing y TDD en Java: Parte 1

Lección 0

(cl.continuum.junit.lessons.Lesson0)

● Creando un test con la anotación @Test● assertEquals(expected, actual)

Page 8: Taller de Unit Testing y TDD en Java: Parte 1

Lección 1

(cl.continuum.junit.lessons.Lesson1)

● assertEquals(expected, actual)● assertArrayEquals(expecteds, actuals)● assertTrue(condition)● assertFalse(condition)● assertNull(object)● assertNotNull(object)● assertSame(expected, actual)● assertNotSame(expected, actual)

Page 9: Taller de Unit Testing y TDD en Java: Parte 1

Lección 2

(cl.continuum.junit.lessons.Lesson2)

● @Before, @After, @BeforeClass, @AfterClass

Page 10: Taller de Unit Testing y TDD en Java: Parte 1

Lección 3

(cl.continuum.junit.lessons.Lesson3)

● assertThat(actual, matcher)

Page 11: Taller de Unit Testing y TDD en Java: Parte 1

Ahora un poco de teoría

Page 12: Taller de Unit Testing y TDD en Java: Parte 1

Unit Testing

● Tip para quedar como experto en testing: SUT es System Under Test, es decir el sistema que estamos probando.

● En un test unitario el SUT es la clase en forma aislada.

● Los tests unitarios prueban los métodos públicos de una clase.

Page 13: Taller de Unit Testing y TDD en Java: Parte 1

¿Unit? Testing

● Si al probar la clase esta hace uso de sus dependencias entonces estamos haciendo un test de integración → Yo le digo test de componente.

● Para tener un test “verdaderamente” unitario las dependencias de la clase deben ser mocks → Próxima semana.

● OJO: ¡Los tests de integración también son buenos!

Page 14: Taller de Unit Testing y TDD en Java: Parte 1

Qué probar

● Caso correcto● Caso erróneo● Casos de borde● Lanzamiento de excepciones

Page 15: Taller de Unit Testing y TDD en Java: Parte 1

Los peores tests posibles

● Uno que depende del orden de ejecución● Uno que no es repetible

Un gatito muerte cada vez que alguien crea o ejecuta uno de esos tests

Page 16: Taller de Unit Testing y TDD en Java: Parte 1

Un buen test

● Independiente● Repetible● Automatizado

Page 17: Taller de Unit Testing y TDD en Java: Parte 1

Buen diseño por default

● Cuando hacemos unit testing...● Nuestras clases tienden a la alta cohesión y al bajo

acoplamiento → En forma automágica :)● Nuestros métodos tienden a hacer una cosa y bien.

● Por lo general el código de buena calidad es fácil de probar.

Page 18: Taller de Unit Testing y TDD en Java: Parte 1

¡A practicar nuevamente!

Page 19: Taller de Unit Testing y TDD en Java: Parte 1

Lección 4

● Hello TDD!

Page 20: Taller de Unit Testing y TDD en Java: Parte 1

Otro poco de teoría

Page 21: Taller de Unit Testing y TDD en Java: Parte 1

El ciclo de desarrollo

● Hasta tener la funcionalidad lista● Crear test que falla● Implementar método● Pasar el test

● Cuando la funcionalidad ya está lista● Correr todos los tests● Subir a control de versiones

Page 22: Taller de Unit Testing y TDD en Java: Parte 1

Feedback,Feedback,Feedback!

Page 23: Taller de Unit Testing y TDD en Java: Parte 1

¿Por qué usar TDD?

● Me obliga a hacerme preguntas sobre los requerimientos

● Me obliga en forma inconsciente a utilizar las mejores prácticas de desarrollo

● Cuando hacemos los tests al final, estamos mentalmente predispuestos a probar sólo lo que va a funcionar

Page 24: Taller de Unit Testing y TDD en Java: Parte 1

Mitos

● TDD es la única forma de hacer software de calidad

● Es muy difícil el cambio de paradigma● Es muy fácil el cambio de paradigma

Page 25: Taller de Unit Testing y TDD en Java: Parte 1

Ojo, oreja, pestaña y ceja:La agilidad es un medio, no un fin

(el fin es crear software de calidad)