En este módulo, aprenderemos sobre las aserciones en JUnit, una de las características más importantes para validar el comportamiento de nuestro código. Las aserciones nos permiten verificar que los resultados de nuestras pruebas sean los esperados, asegurando así la calidad y la corrección del software.
¿Qué es una Aserción?
Una aserción es una declaración que verifica si una condición es verdadera. Si la condición es falsa, la aserción falla y el test se considera fallido. Las aserciones son fundamentales en las pruebas unitarias porque nos permiten comparar el resultado real de una ejecución con el resultado esperado.
Tipos de Aserciones en JUnit
JUnit proporciona una variedad de métodos de aserción que podemos utilizar para validar diferentes tipos de condiciones. A continuación, se presentan algunos de los métodos de aserción más comunes:
assertEquals(expected, actual)
: Verifica que dos valores sean iguales.assertNotEquals(unexpected, actual)
: Verifica que dos valores no sean iguales.assertTrue(condition)
: Verifica que una condición sea verdadera.assertFalse(condition)
: Verifica que una condición sea falsa.assertNull(object)
: Verifica que un objeto sea nulo.assertNotNull(object)
: Verifica que un objeto no sea nulo.assertArrayEquals(expectedArray, actualArray)
: Verifica que dos arrays sean iguales.
Ejemplo Práctico
Veamos un ejemplo práctico de cómo utilizar las aserciones en JUnit. Supongamos que tenemos una clase Calculadora
con un método sumar
que suma dos números.
Ahora, escribiremos un test para verificar que el método sumar
funciona correctamente.
import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; public class CalculadoraTest { @Test public void testSumar() { Calculadora calculadora = new Calculadora(); int resultado = calculadora.sumar(2, 3); assertEquals(5, resultado, "La suma de 2 y 3 debería ser 5"); } }
Explicación del Código
- Importaciones: Importamos las clases necesarias de JUnit.
Assertions
contiene los métodos de aserción yTest
es la anotación que indica que el método es un test. - Clase de Test: Creamos una clase
CalculadoraTest
que contiene nuestros tests. - Método de Test: Definimos un método
testSumar
anotado con@Test
, lo que indica que es un método de prueba. - Instancia de la Clase a Probar: Creamos una instancia de la clase
Calculadora
. - Llamada al Método: Llamamos al método
sumar
con los valores 2 y 3. - Aserción: Utilizamos
assertEquals
para verificar que el resultado de la suma es 5. Si el resultado no es 5, el test fallará y se mostrará el mensaje "La suma de 2 y 3 debería ser 5".
Ejercicio Práctico
Ejercicio 1
Crea una clase Calculadora
con un método restar
que reste dos números. Escribe un test para verificar que el método restar
funciona correctamente.
Solución
import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; public class CalculadoraTest { @Test public void testRestar() { Calculadora calculadora = new Calculadora(); int resultado = calculadora.restar(5, 3); assertEquals(2, resultado, "La resta de 5 y 3 debería ser 2"); } }
Explicación del Código
- Método
restar
: Implementamos el métodorestar
en la claseCalculadora
. - Test
testRestar
: Escribimos un test similar al anterior, pero esta vez para el métodorestar
. - Aserción: Verificamos que la resta de 5 y 3 es 2.
Conclusión
En esta sección, hemos aprendido qué son las aserciones y cómo utilizarlas en JUnit para validar el comportamiento de nuestro código. Las aserciones son una herramienta poderosa para asegurar que nuestras pruebas unitarias sean efectivas y que nuestro código funcione como se espera. En el próximo módulo, exploraremos las aserciones comunes en más detalle y veremos ejemplos adicionales para reforzar estos conceptos.
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