如何通过JUnit的assertThrows验证业务代码正确抛出指定异常?

2026-04-30 17:040阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计807个文字,预计阅读时间需要4分钟。

如何通过JUnit的assertThrows验证业务代码正确抛出指定异常?

要验证一段业务代码是否如预期那样抛出了特定异常,可以使用JUnit 5提供的`assertThrows`方法。这个方法不仅可以确认异常被抛出,还可以获取异常实例,用于进一步分析(如检查异常消息、错误代码等)。与旧版本的`@Test(expected=...)`注解相比,`assertThrows`更加灵活和安全性高。

例如:

基础用法:确认异常类型被抛出

最常用场景是检查某段逻辑是否在非法输入或状态时触发了目标异常:

  • 传入一个 Class<E> 类型参数指定期望的异常类(如 IllegalArgumentException.class
  • 第二个参数是函数式接口 Executable,封装待测的“可能抛异常”的代码块
  • 方法返回捕获到的异常对象,可用于后续校验

示例:

assertThrows(IllegalArgumentException.class, () -> userService.updateUser(null));

进阶断言:校验异常消息与字段

仅确认异常类型不够,业务中常需验证异常携带的提示信息或业务错误码是否准确。

阅读全文

本文共计807个文字,预计阅读时间需要4分钟。

如何通过JUnit的assertThrows验证业务代码正确抛出指定异常?

要验证一段业务代码是否如预期那样抛出了特定异常,可以使用JUnit 5提供的`assertThrows`方法。这个方法不仅可以确认异常被抛出,还可以获取异常实例,用于进一步分析(如检查异常消息、错误代码等)。与旧版本的`@Test(expected=...)`注解相比,`assertThrows`更加灵活和安全性高。

例如:

基础用法:确认异常类型被抛出

最常用场景是检查某段逻辑是否在非法输入或状态时触发了目标异常:

  • 传入一个 Class<E> 类型参数指定期望的异常类(如 IllegalArgumentException.class
  • 第二个参数是函数式接口 Executable,封装待测的“可能抛异常”的代码块
  • 方法返回捕获到的异常对象,可用于后续校验

示例:

assertThrows(IllegalArgumentException.class, () -> userService.updateUser(null));

进阶断言:校验异常消息与字段

仅确认异常类型不够,业务中常需验证异常携带的提示信息或业务错误码是否准确。

阅读全文