¿Qué es JUnit 5?
JUnit 5 es la última versión del popular framework de pruebas unitarias para Java. Esta versión introduce una arquitectura modular y una serie de nuevas características que mejoran la flexibilidad y la extensibilidad del framework. JUnit 5 se compone de tres subproyectos principales:
- JUnit Platform: Proporciona la base para lanzar frameworks de pruebas en la JVM. Define el API para descubrir, filtrar y ejecutar pruebas.
- JUnit Jupiter: Contiene las nuevas anotaciones y el modelo de programación para escribir pruebas en JUnit 5.
- JUnit Vintage: Permite ejecutar pruebas escritas con versiones anteriores de JUnit (JUnit 3 y JUnit 4) en la plataforma JUnit 5.
Ventajas de JUnit 5
- Modularidad: La arquitectura modular permite usar solo los componentes necesarios.
- Extensibilidad: Facilita la creación de extensiones personalizadas.
- Compatibilidad: Permite ejecutar pruebas escritas en JUnit 3 y JUnit 4.
- Nuevas Anotaciones: Introduce nuevas anotaciones que simplifican la escritura de pruebas.
- Mejor Integración: Mejor integración con herramientas de construcción y entornos de desarrollo integrados (IDEs).
Configuración de JUnit 5
Para empezar a usar JUnit 5, necesitas agregar las dependencias necesarias a tu proyecto. Aquí te mostramos cómo hacerlo con Maven y Gradle.
Maven
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.8.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>Gradle
Primer Test en JUnit 5
Vamos a escribir un simple test en JUnit 5 para familiarizarnos con la nueva sintaxis y las anotaciones.
Ejemplo de Código
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
void addition() {
Calculator calculator = new Calculator();
assertEquals(2, calculator.add(1, 1), "1 + 1 should equal 2");
}
}Explicación del Código
- @Test: Indica que el método
additiones un método de prueba. - assertEquals: Verifica que el resultado de
calculator.add(1, 1)sea igual a2. Si no es así, la prueba fallará y mostrará el mensaje "1 + 1 should equal 2".
Ejercicio Práctico
Ejercicio: Escribe una prueba para un método subtract en la clase Calculator que reste dos números.
- Crea la clase
Calculatorcon el métodosubtract. - Escribe una prueba para el método
subtractusando JUnit 5.
Solución:
public class Calculator {
public int subtract(int a, int b) {
return a - b;
}
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
void subtraction() {
Calculator calculator = new Calculator();
assertEquals(0, calculator.subtract(1, 1), "1 - 1 should equal 0");
}
}Retroalimentación
- Error Común: Olvidar importar las clases de JUnit. Asegúrate de importar
org.junit.jupiter.api.Testyorg.junit.jupiter.api.Assertions. - Consejo: Usa nombres descriptivos para tus métodos de prueba para que sea claro qué funcionalidad están verificando.
Conclusión
En esta sección, hemos introducido JUnit 5, sus ventajas y cómo configurarlo en tu proyecto. También hemos escrito nuestro primer test en JUnit 5 y proporcionado un ejercicio práctico para reforzar los conceptos aprendidos. En la siguiente sección, exploraremos la arquitectura de JUnit 5 en mayor detalle.
Curso de JUnit
Módulo 1: Introducción a JUnit
Módulo 2: Anotaciones Básicas de JUnit
- Entendiendo @Test
- Usando @Before y @After
- Usando @BeforeClass y @AfterClass
- Ignorando Tests con @Ignore
Módulo 3: Aserciones en JUnit
Módulo 4: Tests Parametrizados
- Introducción a los Tests Parametrizados
- Creando Tests Parametrizados
- Usando @ParameterizedTest
- Tests Parametrizados Personalizados
Módulo 5: Suites de Tests
Módulo 6: Mocking con JUnit
Módulo 7: Características Avanzadas de JUnit
Módulo 8: Mejores Prácticas y Consejos
- Escribiendo Tests Efectivos
- Organizando el Código de Tests
- Desarrollo Guiado por Tests (TDD)
- Integración Continua con JUnit
