Skip to content

Commit 13d5f22

Browse files
committed
docs: Actualización de la Estructura del Proyecto y Configuración de Ejecución (Surefire)
1 parent 10c21d8 commit 13d5f22

File tree

1 file changed

+58
-15
lines changed

1 file changed

+58
-15
lines changed

README.md

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# **javatest**
22

33
![Java](https://img.shields.io/badge/Java-25%2B-ED8B00?style=for-the-badge&logo=openjdk&logoColor=white)
4-
![Maven](https://img.shields.io/badge/Apache%20Maven-3.2.5-C71A36?style=for-the-badge&logo=apache-maven&logoColor=white)
5-
![JUnit 5](https://img.shields.io/badge/JUnit-5.12.2-25A162?style=for-the-badge&logo=junit5&logoColor=white)
4+
![Maven](https://img.shields.io/badge/Apache%20Maven-3.5.4-C71A36?style=for-the-badge&logo=apache-maven&logoColor=white)
5+
![JUnit 5](https://img.shields.io/badge/JUnit-5.13.4-25A162?style=for-the-badge&logo=junit5&logoColor=white)
66
![License](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)
7-
![Mockito](https://img.shields.io/badge/Mockito-5.20.0-6bba46?style=for-the-badge&logo=mockito&logoColor=white)
7+
![Mockito](https://img.shields.io/badge/Mockito-5.21.0-6bba46?style=for-the-badge&logo=mockito&logoColor=white)
88
![H2](https://img.shields.io/badge/H2_Database-004B8D?style=for-the-badge&logo=sqlite&logoColor=white)
99
![Spring](https://img.shields.io/badge/Spring_JDBC-6DB33F?style=for-the-badge&logo=spring&logoColor=white)
1010
![Tests](https://img.shields.io/badge/Tests-100%25%20Passed-brightgreen?style=for-the-badge&logo=checkmarx&logoColor=white)
1111
![Build Status](https://img.shields.io/github/actions/workflow/status/luiscacuango2/JavaTest/maven.yml?style=for-the-badge&logo=github&label=CI%20Build)
12-
![Java CI](https://github.com/luiscacuango2/javatest/actions/workflows/maven.yml/badge.svg?branch=master)
12+
![Java CI](https://github.com/luiscacuango2/javatest/actions/workflows/maven.yml/badge.svg)
1313

1414
## **Descripción**
1515
Este repositorio es un ecosistema de aprendizaje y desarrollo en Java. Contiene implementaciones de algoritmos clásicos, gestión de lógica de negocio y pruebas de integración, sirviendo como base sólida para despliegue de componentes escalables.
@@ -51,7 +51,7 @@ Para asegurar la robustez del sistema, empleamos una **pirámide de pruebas** eq
5151

5252
### **Stack Técnico**
5353
* **Lenguaje:** Java 25 (utilizando las últimas funciones de la JVM).
54-
* **Build Tool:** Maven 3.8.7+.
54+
* **Build Tool:** Maven 3.5.4+.
5555
* **Testing:** JUnit 5 (Jupiter) & Mockito 5.
5656
* **IDE:** `IntelliJ IDEA 2025.2.5`.
5757

@@ -73,21 +73,45 @@ Para asegurar la robustez del sistema, empleamos una **pirámide de pruebas** eq
7373
```
7474
> **Nota técnica (Java 25):** Para evitar advertencias de carga dinámica durante los tests, el proyecto está configurado para habilitar `-XX:+EnableDynamicAgentLoading` en el entorno de pruebas.
7575

76-
### **Estructura del proyecto**
77-
```
76+
### **Estructura del Proyecto**
77+
78+
El proyecto sigue una arquitectura modular y por capas (Interfaz, Negocio y Datos), organizada de la siguiente manera:
79+
80+
```text
7881
javatest/
79-
├── src/main/java/ # Lógica de negocio (Utilidades, Pagos, etc.)
80-
├── src/main/resources/ # Configuraciones (application.properties)
81-
├── src/test/java/ # Suites de JUnit 5 y configuraciones de Mockito
82-
└── pom.xml # Gestión de dependencias y plugins de compilación
82+
├── src/
83+
│ ├── main/
84+
│ │ ├── java/com/luigi/javatest/
85+
│ │ │ ├── discounts/ # Lógica para gestión de descuentos
86+
│ │ │ ├── movies/ # Dominio principal de Películas
87+
│ │ │ │ ├── data/ # Capa de Datos (Repositorios con JdbcTemplate)
88+
│ │ │ │ ├── model/ # Entidades y modelos de datos (POJOs)
89+
│ │ │ │ └── service/ # Capa de Negocio (Lógica de filtrado y búsqueda)
90+
│ │ │ ├── payments/ # Simulación de pasarela de pagos
91+
│ │ │ ├── player/ # Lógica del reproductor
92+
│ │ │ └── util/ # Clases de utilidad generales
93+
│ │ └── resources/
94+
│ │ └── sql-scripts/ # Scripts SQL para inicialización y pruebas
95+
│ │ └── test-data.sql
96+
│ └── test/
97+
│ └── java/com/luigi/javatest/ # Espejo de src/main para pruebas unitarias e integración
98+
├── pom.xml # Configuración de Maven y dependencias
99+
└── README.md # Documentación del proyecto
83100
```
84101
### **Dependencias**
85102

86-
- **org.mockito:mockito-core:5.20.0** (scope: `test`)
87-
Biblioteca para crear mocks y stubs en pruebas. En este `pom.xml` además se referencia como `-javaagent` en la configuración de `maven-surefire-plugin` (revisa la ruta si hay problemas).
103+
- **org.mockito:mockito-core:5.21.0** (scope: `test`)
104+
Biblioteca principal para crear mocks y stubs en pruebas. Se utiliza junto con **mockito-junit-jupiter** (5.21.0) para una integración fluida con JUnit 5.
105+
*Nota técnica:* Para Java 25+, se ha configurado el `javaagent` y la flag `-XX:+EnableDynamicAgentLoading` en el `maven-surefire-plugin` para permitir la carga dinámica de Mockito.
106+
107+
- **org.junit.jupiter:junit-jupiter:5.13.4** (scope: `test`)
108+
JUnit 5 (Jupiter) — API moderna para pruebas. La versión se gestiona centralizadamente mediante el `junit-bom` (5.13.4) definido en la sección `dependencyManagement`.
88109

89-
- **org.junit.jupiter:junit-jupiter:5.12.2** (scope: `test`)
90-
JUnit 5 (Jupiter) — API moderna para pruebas. Para ejecutarlo correctamente se recomienda usar `maven-surefire-plugin` versión compatible (ya configurado en el `pom.xml`).
110+
- **org.springframework:spring-jdbc:6.2.11**
111+
Proporciona utilidades como `JdbcTemplate` para simplificar las operaciones con la base de datos y el mapeo de resultados.
112+
113+
- **com.h2database:h2:2.4.240**
114+
Base de datos SQL en memoria, utilizada para ejecutar tests de integración rápidos sin necesidad de un servidor de base de datos externo.
91115

92116
---
93117

@@ -104,7 +128,26 @@ javatest/
104128
* **Seguridad:** Monitoreo y escaneo automático de vulnerabilidades en dependencias mediante **Dependabot**.
105129

106130
---
131+
### **Configuración de Ejecución (Surefire)**
132+
133+
El proyecto utiliza **maven-surefire-plugin (3.5.4)** con una configuración personalizada para soportar las últimas características de la JVM:
134+
135+
1. **Patrones de nombres:** Se ejecutan automáticamente los archivos que terminan en:
136+
- `*Test.java`
137+
- `*Should.java` (estilo BDD).
107138

139+
2. **JVM Arguments:**
140+
- `-XX:+EnableDynamicAgentLoading`: Necesario en versiones modernas de Java para que Mockito pueda interceptar llamadas.
141+
- `-javaagent`: Apunta directamente al jar de Mockito en el repositorio local para asegurar su inicialización.
142+
---
143+
144+
### **Cómo ejecutar los tests**
145+
146+
Para ejecutar todas las pruebas desde la terminal, usa:
147+
```bash
148+
mvn test
149+
```
150+
---
108151
### **Contribuciones y Licencia**
109152
¡Las contribuciones son lo que hacen a la comunidad increíble! Si deseas colaborar, sigue estos pasos:
110153

0 commit comments

Comments
 (0)