本篇讲述如何在 JUnit 4 下正确测试异常,我会从 try..catch 的方式谈起,然后说到 @Test(expected=Exception.class), 最后论及 @Rules public ExpectedException 的实现方式,最终基本可确定用 @Rules 是最方便的。
我们在用 JUnit 测试方法异常的时候,最容易想到的办法就是用 try...catch 去捕获异常,需要断言以下几个条件:
1. 确实抛出的异常
2. 抛出异常的 Class 类型
3. 抛出异常的具体类型,一般检查异常的 message 属性中包含的字符串的断定
所以常用的代码你可能会这么写:
1 2 3 4 5 6 7 8 9 10 |
@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 thrown.") 阅读全文 >>