在某些情况下,我们断定目标方法会抛出异常,这时该如何处理呢。
使用junit测试抛出的异常,我总结了3种方式,详见代码:
import static org.junit.Assert.fail;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ExpectedException;/** * 测试异常 * * @author wei.ss * */public class ExceptionTest { // 规则注解,加在public属性上,且属性直接或间接实现了org.junit.rules.TestRule @Rule public ExpectedException expectedException = ExpectedException.none(); // 普通的做法 @Test public void test1() { try { // 模拟抛出异常 if ("aaa".equals("aaa")) { // 如果没有抛出异常,测试将不会通过 throw new RuntimeException(); } // 正常情况下,代码不应该执行到这里 fail("正常情况下,代码不应该执行到这里"); } catch (Exception e) { } } // 使用注解@Test的属性expected指定期望抛出的异常 @Test(expected = RuntimeException.class) public void test2() { // 如果没有抛出异常,测试将不会通过 throw new RuntimeException(); } @Test public void test3() { // 期望后面抛出RuntimeException异常 expectedException.expect(RuntimeException.class); // 如果没有抛出异常,测试将不会通过 throw new RuntimeException(); }}