在某些狀況下,咱們判定目標方法會拋出異常,這時該如何處理呢。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(); } }