在某些状况下,咱们判定目标方法会抛出异常,这时该如何处理呢。java
使用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(); } }