# Diseño pruebas: JUnit ## Buenas prácticas al diseñar pruebas básicas - Un test → una validación: Cada método @Test valida un solo comportamiento o escenario. - Nombres descriptivos: Ayudan a saber qué falla si un test no pasa. - Casos extremos primero: Null, vacío, límites de valores. - Happy Path: Siempre incluye un caso que debería funcionar correctamente. - Transformaciones y reglas de negocio: Verifica la lógica de tu código, no solo la sintaxis. | Tipo de prueba | Qué valida | Ejemplo | | ---------------- | ----------------------- | ----------------------- | | Null | Manejo de objetos nulos | `casa = null` | | Empty | Datos vacíos | `nombre=""` | | Happy Path | Caso correcto | `"Mi casa"` | | Transformación | Resultado transformado | `"mi casa" → "MI CASA"` | | Regla de negocio | Validación lógica | `esCasaValida()` | ![Diagrama de pruebas](img/diagrama-pruebas.png) ## Ejemplo de caso Clase JUnit para realizar la pruebas básicas: class CasaServiceTest { @Test void tieneNombre_conCasaNull_devuelveFalse() { CasaService service = new CasaService(); boolean resultado = service.tieneNombre(null); assertFalse(resultado); } @Test void tieneNombre_conNombreVacio_devuelveFalse() { CasaService service = new CasaService(); Casa casa = new Casa(1, ""); boolean resultado = service.tieneNombre(casa); assertFalse(resultado); } @Test void tieneNombre_conNombreValido_devuelveTrue() { CasaService service = new CasaService(); Casa casa = new Casa(1, "Mi casa"); boolean resultado = service.tieneNombre(casa); assertTrue(resultado); } @Test void obtenerNombreEnMayusculas_devuelveNombreEnMayusculas() { CasaService service = new CasaService(); Casa casa = new Casa(1, "mi casa"); String resultado = service.obtenerNnombreEnMayusculas(casa); assertEquals("MI CASA", resultado); } @Test void esCasaValida_conDatosCorrectos_devuelveTrue() { CasaService service = new CasaService(); Casa casa = new Casa(1, "Casa bonita"); boolean resultado = service.esCasaValida(casa); assertTrue(resultado); }