[JUnit] JUnit5 基础 2 - 生命周期注解 和 DisplayName 注解
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JUnit] JUnit5 基础 2 - 生命周期注解 和 DisplayName 注解相关的知识,希望对你有一定的参考价值。
[JUnit] JUnit5 基础 2 - 生命周期注解 和 DisplayName 注解
生命周期回调
Constructor
constructor 构造函数 是一个比较特殊的生命周期回调方法,在 Juni5 中,每一个通过 @Test
注解 调用的测试方法都是一个独立的实例,因此每一个测试方法都会调用构造函数:
package com.example;
import org.junit.jupiter.api.Test;
public class AppTest
{
public AppTest() {
System.out.println("AppTest Constructor");
}
@Test
public void testOne()
{
System.out.println("testOne");
}
@Test
public void testTwo() {
System.out.println("TestTwo");
}
}
运行结果如下:
可以看到每一个测试运行之前,构造函数内的输出命令都被调用了一次。
@BeforeEach & @AfterEach
如注释的名称,在每一次 @Test
调用之前都会运行一次。
package com.example;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class AppTest
{
public AppTest() {
System.out.println("AppTest Constructor");
}
@BeforeEach
public void beforeEach() {
System.out.println("Before Each");
}
@AfterEach
public void afterEach() {
System.out.println("After Each");
}
@Test
public void testOne()
{
System.out.println("testOne");
}
@Test
public void testTwo() {
System.out.println("TestTwo");
}
}
运行结果如下:
其运行流程如下:
因此,对于一些多个测试之间可以通用的初始化及清理,可以放在 @BeforeEach
与 @AfterEach
中执行。
@BeforeAll & @AfterAll
@BeforeAll
与 @AfterAll
会在所有测试执行之前执行,值得注意的是,@BeforeAll
与 @AfterAll
都是静态方法:
package com.example;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class AppTest
{
@BeforeAll
public static void beforeAll() {
System.out.println("Before All");
}
@AfterAll
public static void afterAll() {
System.out.println("After All");
}
public AppTest() {
System.out.println("AppTest Constructor");
}
@BeforeEach
public void beforeEach() {
System.out.println("Before Each");
}
@AfterEach
public void afterEach() {
System.out.println("After Each");
}
@Test
public void testOne()
{
System.out.println("testOne");
}
@Test
public void testTwo() {
System.out.println("TestTwo");
}
}
运行结果:
其运行流程如下:
@DisplayName 注解
以上是关于[JUnit] JUnit5 基础 2 - 生命周期注解 和 DisplayName 注解的主要内容,如果未能解决你的问题,请参考以下文章 [JUnit] JUnit5 基础 1 - Junit5 结构 与 断言的使用 [JUnit] JUnit5 基础 3 - 依赖注入,假设(assume),开启/禁用测试 与 嵌套测试 Chess案例学习,Class Diagram + 基础代码 + JUnit5@DisplayName
注解 用来提供个性化的名称,可以用于测试类与测试方法,用法大同小异。@