En este tema, aprenderemos sobre las aserciones más comunes en JUnit. Las aserciones son fundamentales para verificar que el código se comporte como se espera. JUnit proporciona una variedad de métodos de aserción que nos permiten comparar valores, verificar condiciones y lanzar excepciones si las condiciones no se cumplen.
- Introducción a las Aserciones Comunes
Las aserciones en JUnit se utilizan para comprobar que los resultados de nuestras pruebas son los esperados. Si una aserción falla, el test se considera fallido. A continuación, se presentan algunas de las aserciones más comunes que se utilizan en JUnit:
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.
- Ejemplos Prácticos
2.1 assertEquals
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class AssertEqualsTest { @Test public void testAddition() { int result = 2 + 3; assertEquals(5, result, "2 + 3 debería ser 5"); } }
En este ejemplo, assertEquals
verifica que el resultado de 2 + 3
sea igual a 5
. Si no lo es, el test fallará y mostrará el mensaje "2 + 3 debería ser 5".
2.2 assertNotEquals
import static org.junit.jupiter.api.Assertions.assertNotEquals; import org.junit.jupiter.api.Test; public class AssertNotEqualsTest { @Test public void testSubtraction() { int result = 5 - 3; assertNotEquals(1, result, "5 - 3 no debería ser 1"); } }
Aquí, assertNotEquals
verifica que el resultado de 5 - 3
no sea igual a 1
. Si el resultado es 1
, el test fallará.
2.3 assertTrue
y assertFalse
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test; public class AssertTrueFalseTest { @Test public void testConditions() { assertTrue(3 > 2, "3 es mayor que 2"); assertFalse(2 > 3, "2 no es mayor que 3"); } }
En este ejemplo, assertTrue
verifica que 3 > 2
sea verdadero y assertFalse
verifica que 2 > 3
sea falso.
2.4 assertNull
y assertNotNull
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.Test; public class AssertNullNotNullTest { @Test public void testNullValues() { String str1 = null; String str2 = "JUnit"; assertNull(str1, "str1 debería ser nulo"); assertNotNull(str2, "str2 no debería ser nulo"); } }
Aquí, assertNull
verifica que str1
sea nulo y assertNotNull
verifica que str2
no sea nulo.
2.5 assertArrayEquals
import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; public class AssertArrayEqualsTest { @Test public void testArrayEquality() { int[] expectedArray = {1, 2, 3}; int[] actualArray = {1, 2, 3}; assertArrayEquals(expectedArray, actualArray, "Los arrays deberían ser iguales"); } }
En este ejemplo, assertArrayEquals
verifica que expectedArray
y actualArray
sean iguales.
- Ejercicios Prácticos
Ejercicio 1: Verificar Suma
Escribe un test que verifique que la suma de dos números es correcta.
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class SumTest { @Test public void testSum() { int a = 10; int b = 20; int result = a + b; assertEquals(30, result, "10 + 20 debería ser 30"); } }
Ejercicio 2: Verificar Condiciones
Escribe un test que verifique que una condición es verdadera y otra es falsa.
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test; public class ConditionTest { @Test public void testConditions() { assertTrue(5 > 3, "5 es mayor que 3"); assertFalse(3 > 5, "3 no es mayor que 5"); } }
Ejercicio 3: Verificar Arrays
Escribe un test que verifique que dos arrays son iguales.
import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; public class ArrayTest { @Test public void testArrayEquality() { String[] expectedArray = {"JUnit", "Test"}; String[] actualArray = {"JUnit", "Test"}; assertArrayEquals(expectedArray, actualArray, "Los arrays deberían ser iguales"); } }
- Retroalimentación y Consejos
- Errores Comunes: Un error común es intercambiar los parámetros
expected
yactual
en las aserciones. Asegúrate de que el valor esperado sea el primer parámetro y el valor actual sea el segundo. - Mensajes de Error: Proporciona mensajes de error claros y descriptivos en las aserciones para facilitar la identificación de problemas cuando un test falla.
- Pruebas Independientes: Asegúrate de que cada test sea independiente y no dependa del resultado de otros tests.
Conclusión
En esta sección, hemos cubierto las aserciones más comunes en JUnit, proporcionando ejemplos prácticos y ejercicios para reforzar los conceptos. Las aserciones son una herramienta poderosa para verificar que el código se comporte como se espera. En el próximo tema, exploraremos las aserciones avanzadas y cómo utilizarlas para realizar verificaciones más complejas.
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