本篇讲述如何在 JUnit 4 下正确测试异常,我会从 try…catch 的方式谈起,然后说到 @Test(expected=Exception.class), 最后论及 @Rules public ExpectedException 的实现方式,最终基本可确定用 @Rules 是最方便的。
我们在用 JUnit 测试方法异常的时候,最容易想到的办法就是用 try…catch 去捕获异常,需要断言以下几个条件:
1. 确实抛出的异常
2. 抛出异常的 Class 类型
3. 抛出异常的具体类型,一般检查异常的 message 属性中包含的字符串的断定
所以常用的代码你可能会这么写:
@Test public void passwordLengthLessThan6LettersThrowsException(){ try{
Password.validate("123");
fail("No exception thrown.");
}catch(Exception ex){
assertTrue(ex instanceof InvalidPasswordException);
assertTrue(ex.getMessage().contains("contains at least 6"));
}
}
这里被测试的方法是 Password.validate() 方法是否抛出了相应的异常,注意这里别漏 try 中的
fail(“No Exception