Forma ruim para o teste JUnit para lançar exceção?
Sou muito novo no JUnit e realmente não sei quais são as práticas recomendadas para exceções e tratamento de exceções.
Por exemplo, digamos que estou escrevendo testes para uma classe IPAddress. Tem um construtor IPAddress (String addr) que lançará um InvalidIPAddressException se o addr for nulo. Tanto quanto eu posso dizer de googling ao redor, o teste para o parâmetro nulo ficará assim.
@Test
public void testNullParameter()
{
try
{
IPAddress addr = new IPAddress(null);
assertTrue(addr.getOctets() == null);
}
catch(InvalidIPAddressException e)
{
return;
}
fail("InvalidIPAddressException not thrown.");
}
Nesse caso, try / catch faz sentido porque sei que a exceção está chegando.
Mas agora, se eu quiser escrever testValidIPAddress (), há algumas maneiras de fazer isso:
Caminho # 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);
}
Caminho 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());
}
}
É prática padrão lançar exceções inesperadas ao JUnit ou simplesmente lidar com elas?
Obrigado pela ajuda.