taller de unit testing y tdd en java: parte 1
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-lessonsTRANSCRIPT
![Page 1: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/1.jpg)
Taller de Unit Testingy TDD en JavaParte 1
Jano GonzálezDesarrollador
![Page 2: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/4.jpg)
Parte N
● Si les interesa podemos hacer más talleres...
![Page 5: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/5.jpg)
¡A practicar!
![Page 6: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/6.jpg)
https://github.com/janogonzalez/junit-lessons
![Page 7: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/9.jpg)
Lección 2
(cl.continuum.junit.lessons.Lesson2)
● @Before, @After, @BeforeClass, @AfterClass
![Page 10: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/10.jpg)
Lección 3
(cl.continuum.junit.lessons.Lesson3)
● assertThat(actual, matcher)
![Page 11: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/11.jpg)
Ahora un poco de teoría
![Page 12: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/13.jpg)
¿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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/16.jpg)
Un buen test
● Independiente● Repetible● Automatizado
![Page 17: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/18.jpg)
¡A practicar nuevamente!
![Page 19: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/19.jpg)
Lección 4
● Hello TDD!
![Page 20: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/20.jpg)
Otro poco de teoría
![Page 21: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/22.jpg)
Feedback,Feedback,Feedback!
![Page 23: Taller de Unit Testing y TDD en Java: Parte 1](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/23.jpg)
¿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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050720/54b4fb6c4a7959b9428b47a2/html5/thumbnails/25.jpg)
Ojo, oreja, pestaña y ceja:La agilidad es un medio, no un fin
(el fin es crear software de calidad)