JUnit 5带来了令人敬畏的改进,它与以前的版本有很大的不同。 JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中。 这些断言之一非常适合测试异常。

设置项目

为了演示JUnit 5的用法,我使用了我的长期unit-testing-demo Github项目,因为该项目已经包含许多单元测试示例: https : //github.com/kolorobot/unit-testing-demo 。 向现有项目添加JUnit 5支持非常简单:除了所有标准JUnit 5依赖项之外,在测试运行时路径中还必须存在junit-vintage-engine:

// JUnit 5 Jupiter API and TestEngine implementationtestCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M4")testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0-M4")// Support JUnit 4 teststestCompile("junit:junit:4.12")testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M4")

JUnit 5 assertThrows

JUnit 5内置的org.junit.jupiter.api.Assertions#assertThrows获取预期的异常类作为第一个参数,而可执行文件(功能接口)则可能将异常作为第二个参数。 如果未引发任何异常或其他类型的异常,则该方法将失败。 该方法返回异常本身,该异常可用于进一步的声明:

import org.junit.jupiter.api.*;import static org.junit.jupiter.api.Assertions.*;class Junit5ExceptionTestingTest { // non public, new to JUnit5@Test@DisplayName("Junit5 built-in Assertions.assertThrows and Assertions.assertAll")@Tag("exception-testing")void verifiesTypeAndMessage() {Throwable throwable = assertThrows(MyRuntimeException.class, new Thrower()::throwsRuntime);assertAll(() -> assertEquals("My custom runtime exception", throwable.getMessage()),() -> assertNull(throwable.getCause()));}
}

摘要

在JUnit 4中,有许多方法可以测试测试代码中的异常,包括try-catch习惯用法,JUnit @Rule或AssertJ(3+)。 从JUnit 5开始,可以使用内置的断言。

参考文献

  • 测试异常– JUnit 4和AssertJ
  • 测试异常– JUnit 4,Java 8和Lambda表达式
  • 在JUnit中测试异常的不同方法

翻译自: https://www.javacodegeeks.com/2017/06/testing-exceptions-junit-5.html

使用JUnit 5测试异常相关推荐

  1. JUnit中测试异常抛出的方法

    最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...

  2. junit 5测试异常处理_使用JUnit 5测试异常

    junit 5测试异常处理 JUnit 5带来了令人敬畏的改进,并且与以前的版本有很大不同. JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中. 这些断言 ...

  3. java junit 异常_JUnit:使用Java 8和Lambda表达式测试异常

    java junit 异常 在JUnit中,有许多方法可以在测试代码中测试异常,包括try-catch idiom JUnit @Rule和catch-exception库. 从Java 8开始,我们 ...

  4. JUnit:使用Java 8和Lambda表达式测试异常

    在JUnit中,有许多方法可以在测试代码中测试异常,包括try-catch idiom JUnit @Rule和catch-exception库. 从Java 8开始,我们还有另一种处理异常的方法:使 ...

  5. junit 5测试异常处理_在JUnit中处理异常的3种方式。 选择哪一个?

    junit 5测试异常处理 在JUnit中,有3种流行的方式来处理测试代码中的异常: 试捕习语 使用JUnit规则 带注解 我们应该使用哪一个?何时使用? 试捕习语 这个习语是最受欢迎的习语之一,因为 ...

  6. junit 测试 异常_使用JUnit规则测试预期的异常

    junit 测试 异常 这篇文章展示了如何使用JUnit测试预期的异常. 让我们从我们要测试的以下类开始: public class Person {private final String name ...

  7. 在JUnit中测试预期的异常

    单元测试用于验证一段代码是否按照开发人员的预期运行. 有时,这意味着检查代码是否也会引发预期的异常. JUnit是Java单元测试的标准,并提供了几种验证抛出异常的机制. 本文探讨了这些选项及其相对优 ...

  8. 使用JUnit规则测试预期的异常

    这篇文章展示了如何使用JUnit测试预期的异常. 让我们从我们要测试的以下类开始: public class Person {private final String name;private fin ...

  9. Junit中的异常测试

    Junit中的异常测试 参考文章: (1)Junit中的异常测试 (2)https://www.cnblogs.com/pengshuangbao/p/6366478.html 备忘一下.

最新文章

  1. 探测服务器操作系统工具,探测服务器操作系统
  2. floodFill函数
  3. 四旋翼无人机调研结果
  4. 如何轻松地将可访问LAN的Pod部署到Kubernetes集群上
  5. NW.js 简介与使用
  6. 你好,未来! | 2018腾讯“云+未来”峰会五月启幕
  7. Scala实现WordCount
  8. 10 JavaScript函数
  9. springmvc-带预览的异步上传图片功能
  10. keras 的dot、multiply区别
  11. WinEdt 9 如何与pdf打开软件(Acrobat)关联
  12. 计算机大一新生的体验
  13. mac电脑最好用的图片浏览器,没有之一
  14. 今日头条18校招第一批算法笔试
  15. 翻译:SQL Server 2005中的覆盖索引
  16. 一文了解下一代互联网核心技术HTTP/3及技术发展
  17. 驰为v10刷linux,V10HD强势回归 3G双系统聚划算首发
  18. CARD耐药数据库Linux使用
  19. vulnhub渗透系列之DC(一) :内含suid的三种提权方法
  20. uniapp网上商城排坑专业户

热门文章

  1. Spring MVC工作原理
  2. 深入理解Java中的逃逸分析
  3. Java中的事务——全局事务与本地事务
  4. Java 8 新特性:扩展注解(类型注解和重复注解)
  5. JAVA面试常考系列一
  6. epoll 浅析以及 nio 中的 Selector
  7. IDEA创建包不是树形
  8. eclipse导入github项目
  9. 为什么要有周考?周考是用来干什么的?
  10. winform实现简单的计算器V1版本