Flujo de Trabajo TDD en Spring Boot
Orientación TDD para servicios Spring Boot con 80%+ de cobertura (unit + integración).
Cuándo Usar
- Nuevas funcionalidades o endpoints
- Correcciones de bugs o refactorizaciones
- Agregar lógica de acceso a datos o reglas de seguridad
Flujo de Trabajo
- Escribir pruebas primero (deben fallar)
- Implementar el código mínimo para que pasen
- Refactorizar con pruebas en verde
- Exigir cobertura con JaCoCo
Pruebas Unitarias (JUnit 5 + Mockito)
Patrones:
- Arrange-Act-Assert
- Evitar mocks parciales; preferir stubbing explícito
- Usar
@ParameterizedTestpara variantes
Pruebas de Capa Web (MockMvc)
Pruebas de Integración (SpringBootTest)
Pruebas de Persistencia (DataJpaTest)
Testcontainers
- Usar contenedores reutilizables para Postgres/Redis que reflejen producción
- Conectar mediante
@DynamicPropertySourcepara inyectar URLs JDBC en el contexto de Spring
Cobertura (JaCoCo)
Fragmento Maven:
Aserciones
- Preferir AssertJ (
assertThat) para legibilidad - Para respuestas JSON, usar
jsonPath - Para excepciones:
assertThatThrownBy(...)
Builders de Datos de Prueba
Comandos de CI
- Maven:
mvn -T 4 testomvn verify - Gradle:
./gradlew test jacocoTestReport
Recuerda: Mantener las pruebas rápidas, aisladas y deterministas. Probar comportamiento, no detalles de implementación.

