Saltar al contenido

JUnit 5: ¿Cómo afirmar que se lanza una excepción?

Si te encuentras con algo que no comprendes puedes comentarlo y trataremos de ayudarte lo mas rápido que podamos.

Solución:

Puedes usar assertThrows(), que le permite probar múltiples excepciones dentro de la misma prueba. Con soporte para lambdas en Java 8, esta es la forma canónica de probar excepciones en JUnit.

Según los documentos JUnit:

import static org.junit.jupiter.api.Assertions.assertThrows;

@Test
void exceptionTesting() 
    MyException thrown = assertThrows(
           MyException.class,
           () -> myObject.doThing(),
           "Expected doThing() to throw, but it didn't"
    );

    assertTrue(thrown.getMessage().contains("Stuff"));

En Java 8 y JUnit 5 (Júpiter) podemos afirmar las excepciones de la siguiente manera. Usando org.junit.jupiter.api.Assertions.assertThrows

público static < T extends Throwable > T afirmarLanzamientos(Clase< T > tipo esperado, ejecutable ejecutable)

Afirma que la ejecución del ejecutable proporcionado arroja una excepción del tipo esperado y devuelve la excepción.

Si no se lanza ninguna excepción, o si se lanza una excepción de un tipo diferente, este método fallará.

Si no desea realizar comprobaciones adicionales en la instancia de excepción, simplemente ignore el valor de retorno.

@Test
public void itShouldThrowNullPointerExceptionWhenBlahBlah() 
    assertThrows(NullPointerException.class,
            ()->
            //do whatever you want to do here
            //ex : objectName.thisMethodShoulThrowNullPointerExceptionForNullParameter(null);
            );

Ese enfoque utilizará la interfaz funcional Executable en org.junit.jupiter.api.

Referirse :

  • http://junit.org/junit5/docs/current/user-guide/#writing-tests-assertions
  • http://junit.org/junit5/docs/5.0.0-M2/api/org/junit/jupiter/api/Executable.html
  • http://junit.org/junit5/docs/5.0.0-M4/api/org/junit/jupiter/api/Assertions.html#assertThrows-java.lang.Class-org.junit.jupiter.api.function. Ejecutable-

Lo cambiaron en JUnit 5 (esperado: InvalidArgumentException, real: método invocado) y el código se ve así:

@Test
public void wrongInput() 
    Throwable exception = assertThrows(InvalidArgumentException.class,
            ()->objectName.yourMethod("WRONG"); );

Eres capaz de añadir valor a nuestro contenido contribuyendo tu experiencia en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *