¿Mala forma para la prueba de JUnit para lanzar la excepción?

Soy bastante nuevo en JUnit, y no sé cuáles son las mejores prácticas para las excepciones y el manejo de excepciones.

Por ejemplo, digamos que estoy escribiendo pruebas para una clase de dirección IP. Tiene un constructor IPAddress (String addr) que lanzará una InvalidIPAddressException si addr es nulo. Por lo que puedo decir de googlear, la prueba para el parámetro nulo se verá así.

@Test
public void testNullParameter()
{
    try
    {
        IPAddress addr = new IPAddress(null);
        assertTrue(addr.getOctets() == null);
    }
    catch(InvalidIPAddressException e)
    {
        return;
    }

    fail("InvalidIPAddressException not thrown.");
}

En este caso, intentar / atrapar tiene sentido porque sé que viene la excepción.

Pero ahora, si quiero escribir testValidIPAddress (), hay un par de maneras de hacerlo:

Manera # 1:

@Test
public void testValidIPAddress() throws InvalidIPAddressException
{
    IPAddress addr = new IPAddress("127.0.0.1");
    byte[] octets = addr.getOctets();

    assertTrue(octets[0] == 127);
    assertTrue(octets[1] == 0);
    assertTrue(octets[2] == 0);
    assertTrue(octets[3] == 1);
}

Manera # 2:

@Test
public void testValidIPAddress()
{
    try
    {
        IPAddress addr = new IPAddress("127.0.0.1");
        byte[] octets = addr.getOctets();

        assertTrue(octets[0] == 127);
        assertTrue(octets[1] == 0);
        assertTrue(octets[2] == 0);
        assertTrue(octets[3] == 1);
    }
    catch (InvalidIPAddressException e)
    {
        fail("InvalidIPAddressException: " + e.getMessage());
    }
}

¿Es la práctica habitual lanzar excepciones inesperadas a JUnit o simplemente tratarlas tú mismo?

Gracias por la ayuda.

Respuestas a la pregunta(8)

Su respuesta a la pregunta