JUnit5的注解demo

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战
今天这篇说的是我们的单元测试,之使用的测试都是JUnit4,SpringBoot2.0之后就引入了JUnit5作为我们的测试工具,那作为JUnit4和JUnit5之间有什么区别吗?

我们现在使用测试只需要创建一个测试类,在类上添加@SpringBootTest注解,测试方法上添加@Test注解就可以了

1
2
3
4
5
6
7
8
9
10
less复制代码@SpringBootTest
class SpringBoot01ApplicationTests {

@Test
void testRedis(){

}


}

接下来带大家使用一下我们新的测试,主要介绍一下这种标签的使用功能

@DisplayName

1
2
3
4
5
6
7
8
9
less复制代码@DisplayName("junit5功能测试类")
public class JunitTest5 {

@DisplayName("displayName")
@Test
void testDisplayName(){
System.out.println(1);
}
}

这个标签主要是用来标注我们的运行标签,演示结果就如下图所示

@BeforeEach和 @AfterEach

1
2
3
4
csharp复制代码@BeforeEach
void testBeforeEach(){
System.out.println("开始测试");
}
1
2
3
4
csharp复制代码@AfterEach
void testAfterEach(){
System.out.println("测试结束");
}

被标注@BeforeEach的方法会在测试方法开始之前开始运行,被标注@AfterEach会在测试方法结束之后运行

@BeforeAll和@AfterAll

1
2
3
4
5
6
7
8
csharp复制代码	@BeforeAll
static void testBeforeAll()P{
System.out.println("所有测试开始");
}
@AfterAll
static void testAfterAll(){
System.out.println("所有测试结束");
}

我们这个两个方法也是在测试开是之前开始的,但是和上面的有什么区别吗?我们的测试不可能就有一个测试,如果有需要公共运行的程序,我们不可能每一个测试都加上一个环绕,添加这@BeforeAll标签的,在所有测试开始之前运行,在所有测试结束之后

@Timeout

1
2
3
4
5
6
less复制代码	@SneakyThrows
@Timeout(value = 5,unit = TimeUnit.MILLISECONDS)
@Test
void testTimeout(){
Thread.sleep(100);
}

他标注了的类必须要在规定的时间内完成否则他就会报错

@SpringBootTest

我们刚刚的测试代码,如果有细心的同学一下子就看出来,我们并没有写@SpringBootTest这个注解,所有如果没有这个注解,我们SpringBoot是不能够使用的。

1
2
3
4
5
6
7
scss复制代码	@Autowired
UserMapper userMapper;

@Test
void te(){
System.out.println(userMapper);
}

甚至我们的idea会直接给我们的提示

我们添加标签之后,我们的tomcat也启动了

我们的对象也拿到了

@RepeatedTest()

1
2
3
4
5
less复制代码	@RepeatedTest(3)
@Test
void testRepeatedTest(){
System.out.println("3");
}

重复测试注解,我们可以在注解后面标注我们测试类运行的次数,它会自动运行

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%