这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战
今天这篇说的是我们的单元测试,之使用的测试都是JUnit4,SpringBoot2.0之后就引入了JUnit5作为我们的测试工具,那作为JUnit4和JUnit5之间有什么区别吗?
我们现在使用测试只需要创建一个测试类,在类上添加@SpringBootTest
注解,测试方法上添加@Test
注解就可以了
@SpringBootTest
class SpringBoot01ApplicationTests {
@Test
void testRedis(){
}
}
复制代码
接下来带大家使用一下我们新的测试,主要介绍一下这种标签的使用功能
@DisplayName
@DisplayName("junit5功能测试类")
public class JunitTest5 {
@DisplayName("displayName")
@Test
void testDisplayName(){
System.out.println(1);
}
}
复制代码
这个标签主要是用来标注我们的运行标签,演示结果就如下图所示
@BeforeEach和 @AfterEach
@BeforeEach
void testBeforeEach(){
System.out.println("开始测试");
}
复制代码
@AfterEach
void testAfterEach(){
System.out.println("测试结束");
}
复制代码
被标注@BeforeEach
的方法会在测试方法开始之前开始运行,被标注@AfterEach
会在测试方法结束之后运行
@BeforeAll和@AfterAll
@BeforeAll
static void testBeforeAll()P{
System.out.println("所有测试开始");
}
@AfterAll
static void testAfterAll(){
System.out.println("所有测试结束");
}
复制代码
我们这个两个方法也是在测试开是之前开始的,但是和上面的有什么区别吗?我们的测试不可能就有一个测试,如果有需要公共运行的程序,我们不可能每一个测试都加上一个环绕,添加这@BeforeAll
标签的,在所有测试开始之前运行,在所有测试结束之后
@Timeout
@SneakyThrows
@Timeout(value = 5,unit = TimeUnit.MILLISECONDS)
@Test
void testTimeout(){
Thread.sleep(100);
}
复制代码
他标注了的类必须要在规定的时间内完成否则他就会报错
@SpringBootTest
我们刚刚的测试代码,如果有细心的同学一下子就看出来,我们并没有写@SpringBootTest
这个注解,所有如果没有这个注解,我们SpringBoot是不能够使用的。
@Autowired
UserMapper userMapper;
@Test
void te(){
System.out.println(userMapper);
}
复制代码
甚至我们的idea会直接给我们的提示
我们添加标签之后,我们的tomcat也启动了
我们的对象也拿到了
@RepeatedTest()
@RepeatedTest(3)
@Test
void testRepeatedTest(){
System.out.println("3");
}
复制代码
重复测试注解,我们可以在注解后面标注我们测试类运行的次数,它会自动运行
近期评论