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();
	}

}
相关文章
相关标签/搜索