实际上, 异常测试 的旧样式是将try块包装在引发异常的代码周围,然后
fail()在try块的末尾添加一条语句。像这样:
public void testNullParameter() { try { IPAddress addr = new IPAddress(null); fail("InvalidIPAddressException not thrown."); } catch(InvalidIPAddressException e) { assertNotNull(e.getMessage()); }}这与您编写的内容没有太大不同,但:
- 你
assertTrue(addr.getOctets() == null);
没用。 - IMO的意图和语法更加清晰,因此更易于阅读。
尽管如此,这还是有点丑陋。但这就是JUnit 4抢救的地方,因为异常测试是JUnit 4中最大的改进之一。有了JUnit 4,您现在可以像这样编写测试:
@Test (expected=InvalidIPAddressException.class) public void testNullParameter() throws InvalidIPAddressException { IPAddress addr = new IPAddress(null);}很好,不是吗?
现在,关于真正的问题,如果我不希望引发异常,我肯定会选择方法1(因为它不太冗长),并让JUnit处理该异常并按预期通过测试。



