Programación con TDD: Ejercicios FizzBuzz y Números Romanos
Clase 15 de 24 • Curso Básico de Testing en Java
Contenido del curso
Introducción a tests en software
Preparación del IDE, proyecto y librerías
- 3

Uso de IntelliJ IDEA para Escribir y Probar Código Java
10:00 min - 4

Creación de Tests Unitarios y Excepciones en Java
06:05 min - 5

Escribir Tests en Java con JUnit: Instalación y Uso Básico
05:50 min - 6

Organización de Tests en Funciones Separadas
04:28 min - 7

Testing en Java con JUnit para Verificar Contraseñas
00:15 min - 8

Simulación de Clases en Java con Moquito
11:05 min - 9

Simulación de Pasarelas de Pago con Mockito
08:30 min - 10

Organización y Mejora de Tests en jUnit
04:02 min - 11

Función `isEmpty` y pruebas con JUnit en Java
00:34 min
TDD
Tests en una aplicación
- 16

Organización de Aplicaciones en Capas: Interfaz, Negocio y Datos
01:15 min - 17

Tests de Aplicación de Películas: Filtrado por Género y Duración
11:43 min - 18

Pruebas de Búsqueda de Películas por Duración en Java
06:11 min - 19

Implementación de MovieRepository con JDBC en Java
13:33 min - 20

Tests de JDBC: Búsqueda e Inserción de Películas por ID
10:08 min - 21

Búsqueda de Películas por Nombre y Director en App
00:59 min
Requerimientos y tests
Conclusiones
FizzBuzz
Para practicar TDD, realizaremos este ejercicio clásico.
Usando TDD (empieza por los tests), implementa una función que dado un número: Si el número es divisible por 3, retorna “Fizz” Si el número es divisible por 5, retorna “Buzz” Si el número es divisible por 3 y por 5, retorna “FizzBuzz” En otro caso, retorna el mismo número
public class FizzBuzz { public static String fizzBuzz(int n) { ... } }
Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.
fizzBuzz(3) ⇒ "Fizz" fizzBuzz(6) ⇒ "Fizz" fizzBuzz(5) ⇒ "Buzz" fizzBuzz(10) ⇒ "Buzz" fizzBuzz(15) ⇒ "FizzBuzz" fizzBuzz(30) ⇒ "FizzBuzz" fizzBuzz(2) ⇒ "2" fizzBuzz(16) ⇒ "16"
Reto extra: Números Romanos
Como extra, prueba este otro ejercicio. Anímate a intentarlo. ¡Te va a hacer pensar!
Usando TDD, implementa una función que convierta un número en el equivalente romano.
public class RomanNumerals { public static String arabicToRoman(int n) { ... } }
Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.
arabicToRoman(1) ⇒ "I" arabicToRoman(2) ⇒ "II" arabicToRoman(3) ⇒ "III" arabicToRoman(5) ⇒ "V" arabicToRoman(6) ⇒ "VI" arabicToRoman(7) ⇒ "VII" arabicToRoman(10) ⇒ "X" arabicToRoman(11) ⇒ "XI" arabicToRoman(15) ⇒ "XV" arabicToRoman(16) ⇒ "XVI" arabicToRoman(50) ⇒ "L" arabicToRoman(51) ⇒ "LI" arabicToRoman(55) ⇒ "LV" arabicToRoman(56) ⇒ "LVI" arabicToRoman(60) ⇒ "LX" arabicToRoman(70) ⇒ "LXX" arabicToRoman(80) ⇒ "LXXX" arabicToRoman(81) ⇒ "LXXXI" arabicToRoman(85) ⇒ "LXXXV" arabicToRoman(86) ⇒ "LXXXVI" arabicToRoman(126) ⇒ "CXXVI" arabicToRoman(2507) ⇒ "MMDVII"
Puedes añadir más tests.
En los siguientes tests, probamos los casos en los que hay símbolos que restan, porque van a la izquierda de un símbolo mayor:
arabicToRoman(4) ⇒ "IV" arabicToRoman(9) ⇒ "IX" arabicToRoman(14) ⇒ "XIV" arabicToRoman(19) ⇒ "XIX" arabicToRoman(24) ⇒ "XXIV" arabicToRoman(40) ⇒ "XL" arabicToRoman(49) ⇒ "XLIX" arabicToRoman(90) ⇒ "XC" arabicToRoman(99) ⇒ "XCIX" arabicToRoman(400) ⇒ "CD" arabicToRoman(900) ⇒ "CM"
Puedes añadir más tests.
Ten en cuenta que el símbolo I puede restar a V y X. El símbolo X puede restar a L y C. El símbolo C puede restar a D y M.
Dicho de manera más simple, las combinaciones en las que hay una resta son las siguientes: IV IX XL XC CD CM.