junit4 測試異常

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

}
相關文章
相關標籤/搜索