Zły formularz testu JUnit, aby rzucić wyjątek?
Jestem całkiem nowy w JUnit i tak naprawdę nie wiem, jakie najlepsze praktyki dotyczą wyjątków i obsługi wyjątków.
Na przykład, powiedzmy, że piszę testy dla klasy adresu IP. Ma adres IPAddress (String addr), który wywoła wyjątek InvalidIPAddressException, jeśli addr ma wartość NULL. O ile mogę powiedzieć, że googling wokół, test parametru null będzie wyglądał następująco.
@Test
public void testNullParameter()
{
try
{
IPAddress addr = new IPAddress(null);
assertTrue(addr.getOctets() == null);
}
catch(InvalidIPAddressException e)
{
return;
}
fail("InvalidIPAddressException not thrown.");
}
W tym przypadku try / catch ma sens, ponieważ wiem, że wyjątek nadchodzi.
Ale teraz, jeśli chcę napisać testValidIPAddress (), istnieje kilka sposobów, aby to zrobić:
Sposób nr 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);
}
Sposób nr 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());
}
}
Czy standardową praktyką jest rzucanie nieoczekiwanych wyjątków do JUnit lub samemu sobie z nimi radzić?
Dzięki za pomoc.