Skip to content

3.常用注解

JUnit5 Jupiter支持下列注解,用于配置测试和扩展框架。

核心注解位于junit-jupiter-api模块中的org.junit.jupiter.api包中。而@ParameterizedTest则位于junit-jupiter-params模块的org.junit.jupiter.params包中。

注解 描述
@Test 表示方法是测试方法。这个注解没有声明任何属性,因为JUnit Jupiter中的测试扩展是基于他们自己的专用注解来操作的。除非被覆盖,否则这些方法可以继承。
@BeforeAll 表示被注解的方法应该在当前类的所有@Test
,@RepeatedTest,@ParameterizedTest和@TestFactory方法之前执行; 这样的方法可以继承(除非被隐藏或覆盖),并且必须是静态的(除非使用“per-class”测试实例生命周期)。
@AfterAll 表示被注解的方法应该在当前类的所有@Test
,@RepeatedTest,@ParameterizedTest和@TestFactory方法之后执行; 这样的方法可以继承(除非被隐藏或覆盖),并且必须是静态的(除非使用“per-class”测试实例生命周期)。
@BeforeEach 表示被注解的方法应在当前类的每个@Test
,@RepeatedTest,@ParameterizedTest或@TestFactory方法之前执行。 除非被覆盖,否则这些方法可以继承。
@AfterEach 表示被注解的方法应在当前类的每个@Test
,@RepeatedTest,@ParameterizedTest或@TestFactory方法之后执行。 除非被覆盖,否则这些方法可以继承。
@Disabled 用于禁用测试类或测试方法; 这个注解不能继承。
@Tag 在类或方法级别声明标签,用于过滤测试。这个注释可以在类级别上继承,但不能在方法级别上继承。
@DisplayName 声明测试类或测试方法的自定义显示名称。这个注解不被继承。
@Nested 表示被注解的类是一个嵌套的非静态测试类。除非使用“per-class”测试实例生命周期,否则@BeforeAll和@AfterAll方法不能直接在@Nested测试类中使用。 这个注解不能继承。
@RepeatedTest 表示方法是用于重复测试的测试模板。除非被覆盖,否则这些方法可以继承。
@ParameterizedTest 表示方法是参数化测试。 除非被覆盖,否则这些方法可以继承。
@TestFactory 表示方法是用于动态测试的测试工厂。除非被覆盖,否则这些方法可以继承。
@TestTemplate 表示方法是测试用例的模板,设计为被调用多次,调用次数取决于自注册的提供者返回的调用上下文。除非被覆盖,否则这些方法可以继承。
@ExtendWith 用于注册自定义扩展。 这个注解可以继承。
@TestInstance 用于为被注解的测试类配置测试实例生命周期
。 这个注解可以继承。

使用@Test,@TestTemplate,@RepeatedTest,@BeforeAll,@AfterAll,@BeforeEach或@AfterEach注解的方法不能有返回值,即必须是void

元注解和组合注解

JUnit5 Jupiter注解可以用作元注解。您可以定义自己的组合注释,它将自动继承其元注释的语义。 例如,您可以像下面那样创建一个名为@Fast的自定义组合注释,而不必在整个代码库(请参阅标签和过滤)中复制和粘贴@Tag("fast")。然后@Fast可以用作@Tag("fast")的一个替代品。