Asier Gomez
Asier Gomez

Reputation: 6558

JUnit exceptions handling testing

I am trying to test the next exception, but I don't know how to throw the exception from JUnit, because is a internal exception of the method.

public boolean suscribirADato(int idDato) {
        InetAddress ip = null;
        boolean adecuadamenteSuscrito = false;

        try {
            ip = InetAddress.getByName(ipMulticast.get(idDato));
            grupoMulticast.set(idDato, ip);
            conexion.joinGroup(grupoMulticast.get(idDato));
            adecuadamenteSuscrito = true;
        } catch (IOException e) {
            LOGGER.info(e.getMessage());
        }
        return adecuadamenteSuscrito;
    }

Upvotes: 1

Views: 80

Answers (2)

alexbt
alexbt

Reputation: 17025

Other replied that you should use a mocking framework.

However, my understanding of your question is the following:

I don't know how to throw the exception from JUnit, because is a internal exception of the method.

What I understand is that you are trying to unit-test an exception thrown and caught inside the method ?

Perhaps your method should be divided into 2 or more methods, which you can test separately ?

From your code sample, the logic being executed when the exception is thrown is

LOGGER.info(e.getMessage());

You may also choose to mock LOGGER and keep a trace when info is called. Then, you can assert that LOGGER.info was indeed called (If I understood correctly, that is).

Upvotes: 1

Cristian Udrea
Cristian Udrea

Reputation: 76

You need to look into the Mockito framework. http://mockito.org/ when(myMockedObject.routine(anyParameter())).thenThrow(new NullPointerException());

Upvotes: 1

Related Questions