JUnit 5 大特性概述
JUnit 5 major features outline
与 JUnit 4 相比,您能否概述 JUnit 5 的主要新功能?
什么是新注释(如果有的话)以及它们的用途(如果字数不多)?
JUnit 5 编程模型几乎保持不变。我们仍然必须使用注释来声明测试和生命周期方法。
乍一看没有大的变化。但是,它们存在:
- 测试 classes 和测试方法都不需要 public。
@Test
注解没有附加参数
- 生命周期注释已重命名
@BeforeAll / @AfterAll
@BeforeEach / @AfterEach
@Disabled
类似于 JUnit 4 的 @Ignore
还对 Assertions
和 Assumptions
进行了一些更改:
- 可选消息现在是最后一个参数
- 可以使用
Supplier<String>
延迟评估断言消息
- 现在可以使用
BooleanSupplier
断言布尔条件
JUnit 5 还向编程模型引入了一些新概念:
- 标记和过滤
@Tag
和 @Tags
用于在 class 或方法级别声明过滤测试的标签;类似于 JUnit 4 中的类别
@Nested
测试 classes
为了更好的分组和组织,共享初始化状态。
@DisplayName
允许声明自定义显示名称 — 带有空格、特殊字符,甚至表情符号⟩—⟩,将由测试运行人员和测试报告显示。
- 动态测试
当您需要 运行 对许多不同的输入值或配置进行同一组测试时很有用。
JUnit 5 不再支持 Runners
和 Rules
。这些部分相互竞争的概念已被单一一致的 扩展模型 所取代。
由于测试执行遵循一定的生命周期。并且可以扩展的生命周期的每个阶段都由一个接口表示。扩展可以表达对某些阶段的兴趣,因为它们实现了相应的接口。
使用扩展你可以实现:
- 条件测试执行
TestExecutionCondition
ContainerExecutionCondition
- 构造函数和方法参数解析(依赖注入)
ParameterResolver
- 异常处理
TestExecutionExceptionHandler
- 处理测试生命周期
TestInstancePostProcessor
BeforeAllCallback
BeforeEachCallback
BeforeTestExecutionCallback
AfterTestExecutionCallback
AfterEachCallback
AfterAllCallback
与 JUnit 4 相比,您能否概述 JUnit 5 的主要新功能?
什么是新注释(如果有的话)以及它们的用途(如果字数不多)?
JUnit 5 编程模型几乎保持不变。我们仍然必须使用注释来声明测试和生命周期方法。 乍一看没有大的变化。但是,它们存在:
- 测试 classes 和测试方法都不需要 public。
@Test
注解没有附加参数- 生命周期注释已重命名
@BeforeAll / @AfterAll
@BeforeEach / @AfterEach
@Disabled
类似于 JUnit 4 的@Ignore
还对 Assertions
和 Assumptions
进行了一些更改:
- 可选消息现在是最后一个参数
- 可以使用
Supplier<String>
延迟评估断言消息
- 现在可以使用
BooleanSupplier
断言布尔条件
JUnit 5 还向编程模型引入了一些新概念:
- 标记和过滤
@Tag
和@Tags
用于在 class 或方法级别声明过滤测试的标签;类似于 JUnit 4 中的类别 @Nested
测试 classes为了更好的分组和组织,共享初始化状态。
@DisplayName
允许声明自定义显示名称 — 带有空格、特殊字符,甚至表情符号⟩—⟩,将由测试运行人员和测试报告显示。
- 动态测试
当您需要 运行 对许多不同的输入值或配置进行同一组测试时很有用。
JUnit 5 不再支持 Runners
和 Rules
。这些部分相互竞争的概念已被单一一致的 扩展模型 所取代。
由于测试执行遵循一定的生命周期。并且可以扩展的生命周期的每个阶段都由一个接口表示。扩展可以表达对某些阶段的兴趣,因为它们实现了相应的接口。
使用扩展你可以实现:
- 条件测试执行
TestExecutionCondition
ContainerExecutionCondition
- 构造函数和方法参数解析(依赖注入)
ParameterResolver
- 异常处理
TestExecutionExceptionHandler
- 处理测试生命周期
TestInstancePostProcessor
BeforeAllCallback
BeforeEachCallback
BeforeTestExecutionCallback
AfterTestExecutionCallback
AfterEachCallback
AfterAllCallback