JUnit5的注解demo

这是我参与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");
    }
复制代码

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

Guess you like

Origin juejin.im/post/7034498812739584030