Flujo de Trabajo TDD en Quarkus
Orientación TDD para servicios Quarkus 3.x con 80%+ de cobertura (unit + integración). Optimizado para arquitecturas orientadas a eventos con Apache Camel.
Cuándo Usar
- Nuevas funcionalidades o endpoints REST
- Correcciones de bugs o refactorizaciones
- Agregar lógica de acceso a datos, reglas de seguridad o streams reactivos
- Probar rutas Apache Camel y manejadores de eventos
- Probar servicios orientados a eventos con RabbitMQ
- Probar lógica de flujo condicional
- Validar operaciones asíncronas con CompletableFuture
- Probar propagación de LogContext
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 (objetivo 80%+)
Pruebas Unitarias con Organización @Nested
Patrones Clave de Prueba
- Clases @Nested: Agrupar pruebas por método bajo prueba
- @DisplayName: Proporcionar descripciones legibles para reportes
- Convención de nombres:
givenX_whenY_thenZpara claridad - Patrón AAA: Comentarios explícitos
// ARRANGE,// ACT,// ASSERT - @BeforeEach: Configurar datos de prueba comunes para reducir duplicación
- assertDoesNotThrow: Probar escenarios exitosos sin capturar excepciones
- assertThrows: Probar escenarios de excepción con validación de mensajes
- verify(): Asegurar que los métodos sean llamados correctamente
- never(): Asegurar que los métodos NO sean llamados en escenarios de error
Pruebas de Rutas Camel
Pruebas de Servicios de Eventos
Pruebas de CompletableFuture
Pruebas de Capa de Recurso (REST Assured)
Cobertura con JaCoCo
Configuración Maven (Completa)
Ejecutar pruebas con cobertura:
Dependencias de Prueba
Buenas Prácticas
Organización de Pruebas
- Usar clases
@Nestedpara agrupar pruebas por método bajo prueba - Usar
@DisplayNamepara descripciones legibles en reportes - Seguir la convención de nombres
givenX_whenY_thenZ - Usar
@BeforeEachpara configuración de datos comunes
Cobertura de Pruebas
- Probar rutas felices para todos los métodos públicos
- Probar manejo de entradas null
- Probar casos borde (colecciones vacías, valores de frontera)
- Probar escenarios de excepción de forma comprensiva
- Apuntar a 80%+ de cobertura de líneas, 70%+ de ramas
Aserciones
- Preferir AssertJ (
assertThat) sobre aserciones JUnit para verificar valores - Para excepciones: usar JUnit
assertThrowspara capturar, luego AssertJ para validar - Para escenarios exitosos sin excepción: usar JUnit
assertDoesNotThrow
Pruebas de Integración
- Usar
@QuarkusTestpara pruebas de integración - Usar
@InjectMockpara mockear dependencias en pruebas Quarkus - Preferir REST Assured para pruebas de API
- Usar
@TestProfilepara configuración específica de prueba


