【发布时间】:2010-12-22 14:57:44
【问题描述】:
我对 JUnit 还是很陌生,我真的不知道异常和异常处理的最佳实践是什么。
例如,假设我正在为 IPAddress 类编写测试。它有一个构造函数 IPAddress(String addr),如果 addr 为 null,它将抛出 InvalidIPAddressException。据我通过谷歌搜索得知,null 参数的测试将如下所示。
@Test
public void testNullParameter()
{
try
{
IPAddress addr = new IPAddress(null);
assertTrue(addr.getOctets() == null);
}
catch(InvalidIPAddressException e)
{
return;
}
fail("InvalidIPAddressException not thrown.");
}
在这种情况下,try/catch 是有意义的,因为我知道异常即将到来。
但现在如果我想编写 testValidIPAddress(),有几种方法可以做到:
方式#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);
}
方式#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());
}
}
标准做法是向 JUnit 抛出意外异常还是自己处理?
感谢您的帮助。
【问题讨论】:
标签: java unit-testing testing junit