Pruebas en Java: frameworks y herramientas para el desarrollador

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Pruebas en Java: revisión de frameworks y herramientas



Las pruebas de calidad son una parte esencial del desarrollo profesional en Java. Sin pruebas automatizadas, es difícil mantener proyectos grandes, implementar nuevas funciones y evitar errores de regresión. En este artículo, analizaremos las herramientas y frameworks clave para probar aplicaciones Java: desde pruebas unitarias hasta verificaciones de integración y automatización de UI.



¿Por qué es importante probar el código Java?

Las pruebas permiten:

  • Detectar errores en las primeras etapas del desarrollo.
  • Simplificar la refactorización: ves inmediatamente qué se ha roto.
  • Documentar el comportamiento del código.
  • Automatizar la verificación de regresiones en cada commit.


JUnit 5 — la base de las pruebas unitarias

JUnit 5 es el estándar de facto para pruebas unitarias en Java. Consta de tres módulos: JUnit Platform, JUnit Jupiter y JUnit Vintage. Jupiter proporciona un nuevo modelo de programación con anotaciones y extensiones.



Ejemplo básico de prueba con JUnit 5:

import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest { @Test void testAddition() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3), "2 + 3 debería ser 5"); }}


Mockito — creación de stubs y mocks

Al probar, a menudo es necesario aislar una clase de sus dependencias (base de datos, APIs externas). Mockito permite crear objetos mock y definir su comportamiento.



Ejemplo de uso de Mockito con JUnit 5:

import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)class UserServiceTest { @Mock private UserRepository repository;

@InjectMocks private UserService service;

@Test void testFindUser() { when(repository.findById(1L)).thenReturn(new User("Alice")); User result = service.findUser(1L); assertEquals("Alice", result.getName()); verify(repository).findById(1L); }}


TestNG — alternativa a JUnit con capacidades ampliadas

TestNG (Test Next Generation) es un framework inspirado en JUnit, pero que añade soporte para grupos de pruebas, parametrización, dependencias y ejecución paralela. Es especialmente popular en proyectos grandes y en pruebas de integración.



Ejemplo de prueba parametrizada en TestNG:

import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import static org.testng.Assert.assertEquals;

public class ParamTest { @DataProvider(name = "numbers") public Object[][] data() { return new Object[][] { {1, 2, 3}, {0, 0, 0}, {-1, 1, 0} }; }

@Test(dataProvider = "numbers") public void testAdd(int a, int b, int expected) { assertEquals(a + b, expected); }}


Selenium — automatización de interfaces web

Para probar aplicaciones web Java (por ejemplo, en Spring Boot), a menudo se utiliza Selenium WebDriver. Permite emular acciones del usuario en el navegador: clics, ingreso de texto, verificación de elementos.



Ejemplo mínimo de prueba con Selenium:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.junit.jupiter.api.Test;

public class LoginTest { @Test public void testLoginPage() { WebDriver driver = new ChromeDriver(); driver.get("https://example.com/login"); driver.findElement(By.id("username")).sendKeys("admin"); driver.findElement(By.id("password")).sendKeys("pa

Recommendations