assertThrows
assertThrows
Sección titulada «assertThrows»La función assertThrows permite afirmar que un bloque de código (generalmente una llamada a un método) debe lanzar una excepción de un tipo determinado cuando se ejecuta. Si la excepción no se lanza, o si es de un tipo diferente, la prueba falla.
@Testvoid testExcepcionSiEdadEsNegativa() { assertThrows(IllegalArgumentException.class, () -> { validarEdad(-1); });}En este ejemplo:
- Se espera que el método validarEdad lance una IllegalArgumentException si se le pasa un número negativo.
- Si eso no ocurre, la prueba será marcada como fallida.
Validación del tipo de excepción y el mensaje
Sección titulada «Validación del tipo de excepción y el mensaje»Además de verificar que se lanza una excepción del tipo correcto, se puede validar que el mensaje de error sea el esperado. Esto es útil para confirmar que la lógica interna del método no solo falla, sino que falla con la justificación adecuada.
@Testvoid testExcepcionConMensajeCorrecto() { IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { validarEdad(-5); }); assertEquals("La edad no puede ser negativa.", ex.getMessage());}Casos límite y pruebas negativas
Sección titulada «Casos límite y pruebas negativas»Las pruebas con assertThrows permiten cubrir lo que se denomina pruebas negativas: situaciones en las que el programa debe rechazar ciertas entradas.
Algunos ejemplos típicos de casos límite que deben verificarse con assertThrows:
- Números fuera de rango.
- Valores nulos (null) donde no deberían.
- Strings vacíos o inválidos.
- Índices negativos o fuera del tamaño de una colección.
- Operaciones prohibidas como división por cero o acceso no autorizado.
Estas pruebas no solo validan que los errores ocurren, sino que el sistema los detecta correctamente y reacciona con la excepción esperada.
Comparación con pruebas positivas
Sección titulada «Comparación con pruebas positivas»| Tipo de prueba | Qué valida | Método común |
|---|---|---|
| Prueba positiva | Que una operación se ejecuta correctamente | assertEquals, assertTrue, etc. |
| Prueba negativa | Que una operación falla cuando debe fallar | assertThrows |
Ambas son igual de importantes: una prueba negativa bien definida asegura que los límites del sistema están claramente establecidos y que no se permite un comportamiento incorrecto o peligroso.