该文章用于自我学习,观看JUnit 5手册的学习记录,在这吐槽一句**笔记的代码段显示可太难看了。
注:优先记录一些使用相关的概念
文章目录
一、注解
JUnit 5的类运行时,会显示类名和方法名,以及注解内需要显示的内容,会以下图形式显示**(TODO:之后会截运行截图补充)**:
1.1 注解列表
注解 | 描述 | 继承 |
---|---|---|
@Test | 表明该方法是测试。此注释不声明任何属性。 | 继承 |
@ParameterizedTest | 表明该方法是参数化测试 | 继承 |
@RepeatedTest | 表明该方法是重复测试的测试模板 | 继承 |
@TestFactory | 表明该方法是用于动态测试的测试工厂 | 继承 |
@TestTemplate | 表明该方法是测试用例的模板,根据注册提供者(registered providers)所返回的调用上下文数量,来决定调用次数。 | 可继承 |
@TestMethodOrder | 用于为带注释的测试类配置测试方法的执行顺序 | 继承 |
@TestInstance | 用于为带注释的测试类配置测试实例生命周期 | 继承 |
@DisplayName | 声明测试类或测试方法的自定义显示名称 | 不可继承 |
@DisplayNameGeneration | 声明测试类的自定义显示名称生成器 | 继承 |
@BeforeEach | 表明该注释方法在每个测试方法之前执行 | 继承 |
@BeforeAll | 表明该注释方法在所有测试方法之前执行 | 继承 |
@AfterEach | 表明该注释方法在每个测试方法之后执行 | 继承 |
@AfterAll | 表明该注释方法在所有测试方法之后执行 | 继承 |
@Nested | 表明该注释类是一个非静态的嵌套测试类,**@BeforeAll 和 @AfterAll 不能直接被用于该类,除非使用了"per-class"test instance lifecycle | 不可继承 |
@Tag | 用于在类或方法上声明用于过滤测试的标签 | 在类上可继承,在方法上不可继承 |
@Disabled | 用于禁用测试类或测试方法 | 不可继承 |
@Timeout | 如果超过给定的持续时间,则使test, test factory, test template, or lifecycle method失效 | 继承 |
@ExtendWith | 用于声明性的注册扩展名 | 继承 |
@RegisterExtension | 用于通过字段以编程的方式注册扩展 | 继承 |
@TempDir | 用于通过生命周期方法或测试方法中的字段注入或参数注入来提供临时目录 | 不明 |
1.1.1 元注释和组合注释
Junit 5是支持自定义自己的组合注释,即多种注释的集合,一般这种集合被称为元注释,新注释将自动继承元注释的语义。
例如:若想在多处使用@Tag(“fast”),通过如下代码即可创建自定义的组合注释,将其命名为@Fast。
(TODO:其中包含未明白的注释)
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
//此处的Target和Retention不明白其用途,待日后补充
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("fast")
public @interface Fast {
}
通过上述代码的定义,之后即可使用@Fast的方式,来代替元注释。