https://github.com/tolevats/modulo-estudiantes-tdd
Proyecto de un CRUD de Estudiantes desarrollado con TDD en Java
https://github.com/tolevats/modulo-estudiantes-tdd
crud java tdd-java
Last synced: 11 months ago
JSON representation
Proyecto de un CRUD de Estudiantes desarrollado con TDD en Java
- Host: GitHub
- URL: https://github.com/tolevats/modulo-estudiantes-tdd
- Owner: Tolevats
- Created: 2025-07-15T04:01:01.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-15T04:22:52.000Z (11 months ago)
- Last Synced: 2025-07-15T10:06:47.089Z (11 months ago)
- Topics: crud, java, tdd-java
- Language: Java
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🎓 **Módulo de Gestión de Estudiantes con TDD**
Este proyecto es una aplicación Java que gestiona un CRUD (Crear, Leer, Actualizar, Eliminar) de estudiantes, desarrollado siguiendo estrictamente la metodología de Desarrollo Guiado por Pruebas (TDD). El objetivo principal fue construir una base de código robusta, bien probada y con un diseño limpio y escalable.
## **Características Principales**
* **Desarrollo 100% Guiado por Pruebas (TDD):** Cada funcionalidad fue escrita para satisfacer una prueba previamente fallida, siguiendo el ciclo Red-Green-Refactor.
* **Arquitectura en Capas:** Clara separación entre la capa de Servicio (lógica de negocio y validaciones) y la Capa de Acceso a Datos (DAO) (interacción con la base de datos).
* **Pruebas Unitarias Aisladas:** Se utilizó Mockito para simular (mock) la capa DAO, permitiendo probar la lógica de negocio del servicio en total aislamiento, sin necesidad de una base de datos real.
* **Pruebas de Integración:** Pruebas que validan la correcta interacción con una base de datos SQLite en memoria.
* **Alta Cobertura de Código:** e configuró **JaCoCo** para medir la cobertura de las pruebas, alcanzando y superando el umbral del 80% requerido.
* **Gestión de Dependencias con Maven:** Todas las librerías necesarias son gestionadas de forma centralizada a través del pom.xml.
## **Tecnologías Utilizadas**
* **Lenguaje: Java 21**
* **Gestor de Proyecto: Apache Maven**
* **Pruebas Unitarias:** JUnit 5
* **Simulación (Mocking):** Mockito
* **Base de Datos:** SQLite-JDBC (Driver de base de datos)
* **Cobertura de Código:** JaCoCo
* **IntelliJ IDEA CE**
## **Cómo Configurar y Ejecutar el Proyecto**
### **Prerrequisitos**
* Tener instalado Java JDK 11 o superior (el proyecto está configurado para la versión 21).
* Tener instalado Apache Maven.
### **Pasos**
1. **Clonar el Repositorio**
`git clone [https://github.com/Tolevats/modulo-estudiantes-tdd.git]`
`cd proyecto-tdd`
2. **Compilar, Probar y Verificar**
Este es el comando principal. Limpia el proyecto, compila todo el código, ejecuta todas las pruebas (unitarias y de integración) y finalmente verifica que la cobertura de código cumple con el mínimo del 80%.
`mvn clean verify`
Al finalizar, deberías ver un mensaje de `BUILD SUCCESS`.
3. **Generar y Ver el Reporte de Cobertura**
El comando anterior ya genera el reporte. Para visualizarlo:
* Abre el siguiente archivo en tu navegador web:
`.../target/site/jacoco/index.html`
* Podrás explorar interactivamente la cobertura de cada clase y método.
4. **Base de Datos (SQLonline)**
Este proyecto está diseñado para interactuar con una base de datos simulada a través de SQLonline.
1. **Acceder a SQLonline:** Visita [https://sqliteonline.com/](https://sqliteonline.com/)
2. **Crear la Tabla:** Copia el contenido del archivo `src/main/resources/schema.sql` y pégalo en el editor de SQLonline. Ejecuta las sentencias para crear la tabla `Estudiantes` y poblarla con datos de ejemplo.
## **Estructura del Proyecto**
.
├── pom.xml # Archivo de configuración de Maven
└── src
├── main
│ ├── java/com/educacion
│ │ ├── dao # Capa de Acceso a Datos (Interfaz e Implementación)
│ │ ├── modelo # Clases de dominio (POJO Estudiante)
│ │ └── servicio # Capa de lógica de negocio
│ └── resources
│ └── schema.sql # Script de definición de la base de datos
└── test
└── java/com/educacion
├── dao # Pruebas de Integración para el DAO
├── modelo # Pruebas Unitarias para el Modelo
└── servicio # Pruebas Unitarias para el Servicio (con Mockito)
---
## **📖 Documentación adicional**
* [Documentación JUnit](https://junit.org/)
* [Mockito](https://site.mockito.org/)
* [Jacoco](https://www.jacoco.org/)
* [Principios SOLID y refactorización](https://refactoring.com/)
---
## **👩💻 Autoría y contribución**
Este proyecto fue desarrollado como práctica integral de automatización de pruebas y TDD. Puede utilizarse como base para futuros módulos, aplicando los principios SOLID, técnicas de mocking y buenas prácticas de cobertura.