Apuntes DAM
Intermedio
Unas 18 horasProyecto 3 de 4

Baterí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. 1

    Análisis

  2. 2

    Pruebas unitarias

  3. 3

    Dependencias

  4. 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

CriterioPesoPara la máxima nota
Diseño de casos25 %Clases y límites completos; cada caso tiene un propósito claro
Calidad de las pruebas30 %Pruebas independientes, legibles, con nombres que describen el comportamiento
Dobles de prueba15 %Se aíslan el tiempo y los servicios externos sin acoplar las pruebas a detalles internos
Cobertura15 %≥ 85 % de ramas y justificación de lo que queda sin cubrir
Incidencias15 %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.