Pruebas en Java: resumen de frameworks y herramientas
Las pruebas de calidad son una parte esencial del desarrollo en Java. Los frameworks modernos permiten automatizar la verificación del código, detectar errores en etapas tempranas y garantizar la estabilidad de la aplicación. En este artículo, revisaremos las herramientas clave para pruebas unitarias, mocking y pruebas de integración en Java, además de proporcionar ejemplos prácticos de su uso.
1. JUnit 5 — el estándar de pruebas unitarias
JUnit 5 (Jupiter) es el framework más popular para pruebas modulares en Java. Proporciona anotaciones para definir métodos de prueba, gestionar el ciclo de vida y la parametrización.
Anotaciones principales de JUnit 5:
@Test— marca un método de prueba@BeforeEach/@AfterEach— se ejecutan antes/después de cada prueba@BeforeAll/@AfterAll— se ejecutan una vez para toda la clase@ParameterizedTest— para pruebas con diferentes datos de entrada
Ejemplo de una prueba simple:
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test void testAddition() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3)); }
@Test void testDivisionByZero() { Calculator calc = new Calculator(); assertThrows(ArithmeticException.class, () -> calc.divide(10, 0)); }}2. TestNG — alternativa con capacidades avanzadas
TestNG (Test Next Generation) es otro potente framework, inspirado en JUnit, pero que ofrece funciones adicionales: agrupación de pruebas, pruebas dependientes, ejecución paralela y configuraciones flexibles mediante XML.
Características distintivas de TestNG:
@Test(groups = {"smoke"})— agrupación de pruebas@DataProvider— paso de datos a las pruebas@Test(dependsOnMethods = {"methodA"})— dependencias entre pruebas
Ejemplo con DataProvider:
import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import static org.testng.Assert.assertEquals;
public class DataDrivenTest {
@DataProvider(name = "testData") public Object[][] createData() { return new Object[][] { { 1, 2, 3 }, { 5, -3, 2 }, { 0, 0, 0 } }; }
@Test(dataProvider = "testData") public void testAdd(int a, int b, int expected) { Calculator calc = new Calculator(); assertEquals(calc.add(a, b), expected); }}3. Mockito — creación de simulaciones (mocks)
Mockito es una biblioteca para crear objetos mock en Java. Permite aislar el componente bajo prueba de sus dependencias (bases de datos, servicios externos) y verificar la interacción entre objetos.
Funcionalidades principales de Mockito:
mock()— creación de un objeto mockwhen().thenReturn()— definición de comportamientoverify()— verificación de llamadas a métodos@Mocky@InjectMocks— inyección automática de mocks
Ejemplo de uso de Mockito:
import static org.mockito.Mockito.*;import org.junit.jupiter.api.Test;
public class UserServiceTest {
@Test void testGetUser() { // Creamos un mock para el repositorio UserRepository mockRepo = mock(UserRepository.class); when(mockRepo.findById(1L)).thenReturn(new User("Alice"));
UserService service = new UserService(mockRepo); User user = service.getUser(1L);
assertEquals("Alice", user.getName()); verify(mock También en la biblioteca
Parseo de HTML en Java: Jsoup, HtmlUnit y otras herramientas
ORM para Swift (iOS/macOS): comparación y ejemplos de uso
Trabajo con CSV en PHP: biblioteca PhpSpreadsheet
Trabajo con Excel en Swift en iOS y macOS: bibliotecas y ejemplos