0

与 JUnit 4 相比,您能否概述一下 JUnit 5 的主要新特性?
什么是新的注释,如果有的话,它们的用途是什么(如果很少的话)?

4

1 回答 1

2

JUnit 5编程模型几乎保持不变。我们仍然必须使用注解来声明测试和生命周期方法。乍一看没有大的变化。但是,它们存在:

  • 测试类和测试方法都不需要公开。
  • @Test注解没有附加参数
  • 生命周期注释已重命名
    • @BeforeAll / @AfterAll
    • @BeforeEach / @AfterEach
  • @Disabled类似于 JUnit 4@Ignore

Assertions还对and进行了一些更改Assumptions

  • 可选消息现在是最后一个参数
  • 断言消息可以使用延迟评估Supplier<String>
  • 现在可以使用断言布尔条件BooleanSupplier

JUnit 5 还在编程模型中引入了一些新概念:

  • 标记和过滤

    @Tag@Tags用于在类或方法级别声明过滤测试的标签;类似于 JUnit 4 中的类别

  • @Nested测试班

    为了更好的分组和组织,共享初始化状态。

  • @DisplayName

    允许声明自定义显示名称——带有空格、特殊字符,甚至是表情符号——将由测试运行者和测试报告显示。

  • 动态测试

    当您需要对许多不同的输入值或配置运行相同的测试集时很有用。

JUnit 5 不再支持RunnersRules. 这些部分竞争的概念已被单一一致的扩展模型所取代。由于测试执行遵循一定的生命周期。并且可以扩展的生命周期的每个阶段都由一个接口表示。扩展可以表达对某些阶段的兴趣,因为它们实现了相应的接口。使用扩展,您可以实现:

  • 条件测试执行
    • TestExecutionCondition
    • ContainerExecutionCondition
  • 构造函数和方法参数解析(依赖注入)
    • ParameterResolver
  • 异常处理
    • TestExecutionExceptionHandler
  • 处理测试生命周期
    • TestInstancePostProcessor
    • BeforeAllCallback
    • BeforeEachCallback
    • BeforeTestExecutionCallback
    • AfterTestExecutionCallback
    • AfterEachCallback
    • AfterAllCallback
于 2016-08-30T11:35:14.760 回答