Go to file
Isidoro Nevares Martín edbd3bdded Commit inicial
2026-03-16 10:47:22 +01:00
.settings Commit inicial 2026-03-16 10:47:22 +01:00
img Commit inicial 2026-03-16 10:47:22 +01:00
src/main/java/org/lapaloma/hogwarts Commit inicial 2026-03-16 10:47:22 +01:00
.classpath Commit inicial 2026-03-16 10:47:22 +01:00
.gitignore Commit inicial 2026-03-16 10:47:22 +01:00
.project Commit inicial 2026-03-16 10:47:22 +01:00
pom.xml Commit inicial 2026-03-16 10:47:22 +01:00
README.md Commit inicial 2026-03-16 10:47:22 +01:00

JUnit 5 Conceptos básicos


1. Anotaciones esenciales de JUnit 5

JUnit 5 usa anotaciones para indicar qué métodos son tests y cómo preparar o limpiar el entorno.

Anotación Cuándo se ejecuta Para qué sirve
@Test En cada test Marca un método como test
@BeforeEach Antes de cada test Preparar el estado común (crear objetos, etc.)
@AfterEach Después de cada test Limpiar recursos (cerrar conexiones, etc.)
@BeforeAll Una vez antes de todos Inicializar recursos costosos (se ejecuta una sola vez)
@AfterAll Una vez después de todos Liberar recursos globales

Nota: Los métodos @BeforeAll y @AfterAll deben ser static.

Ejemplo

class AlumnoServiceTest {

    private AlumnoService service;

    @BeforeEach
    void setUp() {
        service = new AlumnoService(); // Se ejecuta antes de cada @Test
    }

    @Test
    void telefonoDe9DigitosEsValido() {
        // ...
    }

    @Test
    void telefonoVacioNoEsValido() {
        // ...
    }
}

En este ejemplo, setUp() crea una instancia nueva de AlumnoService antes de cada test, garantizando que los tests son independientes entre sí.


2. Nomenclatura de los tests

El nombre del método de test es muy importante: cuando un test falla, el nombre es lo primero que se lee.

Convención recomendada

metodo_cuandoCondicion_retornaResultado()
Parte Significado
metodo El método que se está probando
cuandoCondicion La situación o entrada que se usa
retornaResultado Lo que se espera que ocurra

Ejemplos

// ✅ Nombres descriptivos
@Test
void telefonoValido_cuandoTiene9Digitos_retornaTrue() { ... }

@Test
void telefonoValido_cuandoEstaVacio_retornaFalse() { ... }

@Test
void telefonoValido_cuandoTieneLetras_retornaFalse() { ... }

// ❌ Nombres que no dicen nada
@Test
void test1() { ... }

@Test
void pruebaTest() { ... }

Con nombres descriptivos, si falla telefonoValido_cuandoTiene9Digitos_retornaTrue sabemos exactamente qué está fallando sin ni siquiera abrir el código.


3. Given When Then (G-W-T)

El patrón Given-When-Then es una forma de estructurar los tests que viene del enfoque BDD (Behavior Driven Development). Es equivalente al patrón AAA pero con una terminología más orientada al comportamiento.

Fase Significado Equivalente AAA
Given Dado un contexto inicial Arrange
When Cuando ocurre una acción Act
Then Entonces se produce un resultado Assert

Ejemplo

@Test
void telefonoValido_cuandoTiene9Digitos_retornaTrue() {

    // Given
    Alumno alumno = new Alumno();
    alumno.setTelefono("123456789");

    // When
    boolean resultado = service.telefonoValido(alumno);

    // Then
    assertTrue(resultado);
}

La ventaja de G-W-T es que el test se lee casi como una frase en lenguaje natural:

Dado un alumno con teléfono de 9 dígitos, cuando compruebo si es válido, entonces el resultado es verdadero.

Esto facilita que cualquier componente del equipo, incluso sin conocimientos técnicos, entienda qué se está probando.

Diagrama de pruebas


Fuentes: ChatGPT + Claude