Unit testing in Java with JUnit 5
Write tests that check your code automatically. With a simulated runner where you change values and watch the tests pass or fail.
Un test unitario es un trozo de código que ejecuta otro trozo de código y comprueba que el resultado es el esperado. Si mañana rompes algo sin querer, el test falla y te avisa. JUnit es la librería estándar para escribirlos en Java.
public class Calculadora {
public int sumar(int a, int b) { return a + b; }
public int dividir(int a, int b) {
if (b == 0) throw new ArithmeticException("division por cero");
return a / b;
}
}
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
class CalculadoraTest {
Calculadora calc;
@BeforeEach
void init() { calc = new Calculadora(); } // se ejecuta antes de CADA test
@Test
void sumaSimple() {
assertEquals(7, calc.sumar(3, 4));
}
@Test
void divisionPorCeroLanzaExcepcion() {
assertThrows(ArithmeticException.class, () -> calc.dividir(10, 0));
}
}
Test runner
Cambia el «valor esperado» de cada test y pulsa «Ejecutar». Verás cuáles pasan (verde) y cuáles fallan (rojo), como en tu IDE.
Most-used assertions
| Aserción | Pasa si… |
|---|---|
assertEquals(esperado, real) | son iguales |
assertTrue(cond) / assertFalse(cond) | la condición es true / false |
assertNull(x) / assertNotNull(x) | x es null / no es null |
assertThrows(Tipo.class, () -> ...) | ese código lanza esa excepción |
assertArrayEquals(a, b) | los arrays tienen los mismos elementos |
Lifecycle: @BeforeEach
Los métodos anotados controlan cuándo se ejecuta el código de preparación y limpieza.
Check what you've learned
assertEquals(7, calc.sumar(3, 4)), el 7 es…@BeforeEach se ejecuta…