es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de probar que un método de Java no lanza un tipo específico de excepción?

Estoy mirando la función assertDoesNotThrow() en la documentación de JUnit aquí. Sé que se puede especificar el tipo de excepción con assertThrows(), pero parece que no se puede hacer lo mismo con assertDoesNotThrow(). ¿Hay una razón particular para esto? Si quisiera demostrar, por ejemplo, que un método no arroja una ParseException, ¿cómo haría eso?

Edit: Debería haber puesto “no arroja una ParseException cuando se le da un argumento particular, por ejemplo, “hola”.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es verdad que el método assertDoesNotThrow() no te permite especificar el tipo de excepción que esperas. La razón de esto es que el propósito de este método es comprobar que no se lance ninguna excepción, de ningún tipo, al ejecutar el bloque de código especificado. Esto es útil cuando quieres asegurarte de que un código en particular no lance excepciones inesperadas, independientemente de su tipo.

    Si específicamente deseas comprobar que un método no lance una excepción de tipo ParseException al recibir un argumento particular, puedes lograrlo utilizando un bloque try-catch alrededor de la llamada al método y luego asegurándote de que no se ejecute el bloque catch. Por ejemplo:

    @Test
    void testMyMethodDoesNotThrowParseException() {
        try {
            myObject.myMethod("hello");
        } catch (ParseException e) {
            fail("Se lanzó una ParseException inesperada");
        }
    }
    

    En este ejemplo, llamamos al método myMethod() con el argumento “hello” y luego capturamos cualquier excepción de tipo ParseException que pueda ser lanzada. Si se captura una ParseException, fallamos la prueba con un mensaje de error. Si no se captura ninguna ParseException, la prueba pasa. Esto demuestra efectivamente que el método myMethod() no lanza una excepción de tipo ParseException al recibir el argumento “hello”.

Comments are closed.