与JUnit 4相比,您能否概述一下JUnit 5的新主要功能?
什么是新注释,如果有,以及它们用于什么(如果很少的话)?
答案 0 :(得分:2)
JUnit 5 编程模型几乎保持不变。我们仍然必须使用注释来声明测试和生命周期方法。 乍一看,没有什么大的变化。但是,它们存在:
@Test
注释没有其他参数@BeforeAll / @AfterAll
@BeforeEach / @AfterEach
@Disabled
类似于JUnit 4的@Ignore
还对Assertions
和Assumptions
进行了一些更改:
Supplier<String>
BooleanSupplier
JUnit 5还在编程模型中引入了一些新概念:
@Tag
和@Tags
用于在类或方法级别声明用于过滤测试的标记;类似于JUnit 4中的类别
@Nested
测试类为了更好的分组和组织,共享初始化状态。
@DisplayName
允许声明自定义显示名称 - 包含空格,特殊字符,甚至是表情符号 - 将由测试运行者和测试报告显示。
当您需要在许多不同的输入值或配置上运行相同的测试集时非常有用。
JUnit 5不再支持Runners
和Rules
。这些部分竞争的概念已被单个一致的扩展模型取代。
由于测试执行遵循一定的生命周期。并且可以扩展的生命周期的每个阶段由接口表示。扩展可以表达对某些阶段的兴趣,因为它们实现了相应的接口。
使用扩展,您可以实现:
TestExecutionCondition
ContainerExecutionCondition
ParameterResolver
TestExecutionExceptionHandler
TestInstancePostProcessor
BeforeAllCallback
BeforeEachCallback
BeforeTestExecutionCallback
AfterTestExecutionCallback
AfterEachCallback
AfterAllCallback