java单元测试如何断言异常

​ 在junit单元测试中,我们可以使用 org.junit.Assert.assertThrows 包下的 assertThrows() 方法 这个方法返回了一个泛型的异常

public static <T extends Throwable> assertThrows(Class<T> expectedType,  Executable executable)

​ 假设我们有以下测试类

package cn.lanqiao;

public class MyError {
	
	public int t(int num) {
		if(num < 18) {
			throw new NullPointerException("年龄小于18");
		}else {
			return 0;
		}
	}

}

​ 咱们可以使用assertThrows() 去断言它所抛出的异常

第一个参数可以传入异常的类型, 第二个参数位置传入一个函数, 可以用 Lambda 表达式

package cn.lanqiao;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;

import org.junit.Before;
import org.junit.Test;

public class MyErrorTest {
	private MyError myError;
	
	@Before
	public void init() {
		myError = new MyError();
	}
	
	@Test
	public void test1() {
		assertThrows(NullPointerException.class, () -> myError.t(17));
	}
}
我们也可以通过接收它的返回值,然后拿到抛出异常的信息,在断言提示信息
@Test
public void test2() {
    NullPointerException exception =  assertThrows(NullPointerException.class, () -> myError.t(17));
    // 此处 exception.getMessage()  将会得到 年龄小于18  这段字符串
    assertEquals("年龄小于18", exception.getMessage());
}
除了这种方法,我们还可以在@Test的注解中,中预期异常,如这样
@Test(expected = NullPointerException .class)
public void test3() {
    myError.t(17);
}
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值