我的测试:这是它强调萨克斯之后的东西.并且坚持认为我有一个try-catch块....但互联网说,测试异常的正确方法是@Test(expected=IllegalArgumentException.class)
@Test(expected= XMLClientNotFoind.class)
public void testGetClientFromIP() throws XMLClientNotFound{
...
assertEquals(c, sax.getClientFromIP("101.0.2.01"));
}
Run Code Online (Sandbox Code Playgroud)
方法getClientFromIP在这里:
public Client getClientFromIP(String ip) throws XMLClientNotFound {
...
throw new XMLClientNotFound();
}
Run Code Online (Sandbox Code Playgroud)
我的例外:
public class XMLClientNotFound extends Exception{
}
Run Code Online (Sandbox Code Playgroud)
首先:
@Test(expected=IllegalArgumentException.class)
Run Code Online (Sandbox Code Playgroud)
不应被视为一种正确的方式,特别是对于这样的一般例外.原因是您无法控制测试方法中的哪个语句实际抛出异常.你也不能在消息标签,原因等上做任何断言.
try-catch精确地使用假定抛出异常的行是正确的方法:
try {
shouldThrow()
fail("Expected exception");
} catch(XMLClientNotFound e) {
assertThat(e).hasMessage("Expected message"); //FEST-Assert syntax
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试@Rule我前一段时间写的 JUnit ,以使您的测试更具可读性.
| 归档时间: |
|
| 查看次数: |
1944 次 |
| 最近记录: |