📚 Guía Básica de JUnit 5
El framework estándar para pruebas unitarias en Java.
1. Configuración (Maven)
JUnit 5 se recomienda configurar usando **Maven** o **Gradle**. Estas dependencias deben ir en el scope test
de tu pom.xml
.
Dependencias en Maven (pom.xml)
<dependencies>
<!-- Módulo de programación y modelo de extensiones -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<!-- Motor para ejecutar tests (Runtime) -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
</dependencies>
2. Estructura de un Test Básico
Una prueba unitaria sigue el patrón **Arrange, Act, Assert** (Preparar, Actuar, Asegurar).
Ejemplo: Probar el método sumar()
de una clase Calculadora
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class CalculadoraTest {
private final Calculadora calculadora = new Calculadora();
@Test
void deberiaSumarDosNumerosPositivos() {
// ARRANGE (Preparar): Valores de entrada y resultado esperado
int esperado = 8;
// ACT (Actuar): Llamada al método a probar
int resultado = calculadora.sumar(5, 3);
// ASSERT (Asegurar): Verificar el resultado
assertEquals(esperado, resultado, "La suma debe ser 8");
}
}
3. Anotaciones de Ciclo de Vida
Controlan cuándo se ejecutan los métodos de configuración y limpieza.
-
@Test
: Marca un método como una prueba ejecutable. -
@BeforeEach
: Se ejecuta **antes de CADA** método@Test
. Útil para resetear el entorno. -
@AfterEach
: Se ejecuta **después de CADA** método@Test
. Útil para limpiar recursos. -
@BeforeAll
: Se ejecuta **una vez antes de TODAS** las pruebas en la clase (el método debe serstatic
). -
@AfterAll
: Se ejecuta **una vez después de TODAS** las pruebas en la clase (el método debe serstatic
). -
@DisplayName("Mi Test")
: Asigna un nombre descriptivo a la prueba, más legible que el nombre del método.
4. Aserciones Comunes (Clase Assertions
)
Métodos estáticos para verificar resultados. Importados con import static org.junit.jupiter.api.Assertions.*
.
-
assertEquals(esperado, actual)
: Verifica que dos valores son iguales. -
assertTrue(condicion)
: Verifica que la condición booleana estrue
. -
assertNull(objeto)
: Verifica que el objeto esnull
. -
assertThrows(Exception.class, lambda)
: Verifica que se lance una excepción esperada. -
assertAll(ejecutables...)
: Agrupa múltiples aserciones para que fallen todas a la vez (si aplica) y no detenga la ejecución a la primera.