Intermedio
Unas 18 horasProyecto 3 de 4Batería de pruebas para una biblioteca de préstamos
Recibes el código de una biblioteca municipal: préstamos, devoluciones, reservas y sanciones por retraso. El código funciona «más o menos», pero nadie se atreve a tocarlo. Diseña y automatiza las pruebas que permitan cambiarlo con seguridad, encuentra los errores que tenga y documenta la cobertura alcanzada.
Java 21JUnit 5MockitoJaCoCoMaven
Tu avance0/16 · 0 %
Objetivos de aprendizaje
- •Diseñar casos con caja negra (clases de equivalencia y valores límite) y caja blanca (caminos)
- •Automatizar pruebas unitarias con JUnit 5, incluidas las parametrizadas
- •Aislar dependencias (fecha actual, envío de avisos) con dobles de prueba
- •Interpretar la cobertura y sus límites
Requisitos mínimos
Fases sugeridas
- 1
Análisis
- 2
Pruebas unitarias
- 3
Dependencias
- 4
Cobertura e informe
Qué entregar
- Repositorio con el código y las pruebas
- Documento de diseño de casos
- Informe de JaCoCo
- Informe de incidencias
Para ir más allá
- Aplica pruebas de mutación con PIT y mejora la puntuación
- Escribe las pruebas de una funcionalidad nueva con TDD
- Ejecuta las pruebas en GitHub Actions
Rúbrica de evaluación
| Criterio | Peso | Para la máxima nota |
|---|---|---|
| Diseño de casos | 25 % | Clases y límites completos; cada caso tiene un propósito claro |
| Calidad de las pruebas | 30 % | Pruebas independientes, legibles, con nombres que describen el comportamiento |
| Dobles de prueba | 15 % | Se aíslan el tiempo y los servicios externos sin acoplar las pruebas a detalles internos |
| Cobertura | 15 % | ≥ 85 % de ramas y justificación de lo que queda sin cubrir |
| Incidencias | 15 % | Reproducibles y bien priorizadas |
Úsala para autoevaluarte antes de entregar. Tu profesorado puede usar otros criterios.
Consejos y errores típicos
- No uses LocalDate.now() dentro de la lógica: no podrás probar los retrasos.
- Una prueba sin aserciones siempre pasa y no comprueba nada.
- Si una prueba necesita muchos mocks, la clase probablemente hace demasiadas cosas.