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.

public class Calculadora {
    public int sumar(int a, int b) {
        return a + b;
    }
}

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

  1. Importaciones: Importamos las clases necesarias de JUnit. Assertions contiene los métodos de aserción y Test es la anotación que indica que el método es un test.
  2. Clase de Test: Creamos una clase CalculadoraTest que contiene nuestros tests.
  3. Método de Test: Definimos un método testSumar anotado con @Test, lo que indica que es un método de prueba.
  4. Instancia de la Clase a Probar: Creamos una instancia de la clase Calculadora.
  5. Llamada al Método: Llamamos al método sumar con los valores 2 y 3.
  6. 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.

public class Calculadora {
    public int restar(int a, int b) {
        return a - b;
    }
}

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

  1. Método restar: Implementamos el método restar en la clase Calculadora.
  2. Test testRestar: Escribimos un test similar al anterior, pero esta vez para el método restar.
  3. 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.

© Copyright 2024. Todos los derechos reservados