00:00
好,接下来呢,我们说一下解用五里边的常用注解,当然老师这一块呢,列举的是我们开发里边常见的一些开发注解,那么实际上呢,解用这条五里边的注解也非常多,他可以参照官方文档,他来百度搜索解用条五来到它这个官网这块呢,有用户手册来点进来就行了,在官方文档里边呢,在下边也列举了非常常用的这个测试注解,2.1这个章节可以把这个拿过来,CTRLC,所有详细的这个注解我们来可以看它就行了。我们接下来就来创建一个测试类来测试这些注解,然后我们最常用的第一个注解就是at test,我们想要做一个单元测试,我们必须给方法上标注一个at test,这个注解目前用的非常多,然后呢,再接下来由我们的参数化测试,然后可重复执行的测试,包括display name等等,下边我们接下来,因为这两个呢,我们后边会说,那么接下来主要来核心测试,下面这几个专门来写一个测试类,那我们可以自己来写一个测试类,就叫解用5TEST吧。
01:00
我们来测试解用条五功能的,好,既然测试简用条功能,接下来写一个方法,首先呢,我们来测试第一个注解叫test,来看一下我们常用的第一个注解叫display name,这是呢为我们测试类或者呢测试方法来准备一个我们的这个显示名称,这样我们以后测试起来呢就会非常方便,我们接下来需要标注一个and test注解,注意这个注解一定是这个jupi API里边的,然后呢,我们接下来可以来使用上一个注解,比如第一个叫display name,我们可以给这个测试方法起一个名,我们就叫测试display name注解,包括呢,给整个我们这个类上,我们也可以标注display name,我们这个类呢是干什么的?这是我们这个解UNIT5功能测试测试类,好,我们可以来测试一下,当整个测试方法呢,我随便写一个,我们就让他在控制台打一个,一来运行一下这个测试方法,来看一下会有什么样的效果。
02:01
好,我们现在呢看到,哎,我们整个测试结果里边呢,是哪一个类测试的解UNIT5功能测试类在这有,而且呢,我们刚运行了测试display name注解的这个方法,没问题,们也打印了一,而这个方法呢,最终打印结果我们只要一点它我们就能看到,好,这是第一个注解加display name,然后呢,第二个before each是在每一个测试方法测试之前们都要运行的,所以我们来写第二个假设呢,我们每次想要在测试这些方法的时候,我们都让它运行一个,我们让它test,我们称为叫北方each,我们让它呢在控制台打印一个,哎,测试就要开始了,测试就要开始了,好,然后呢,我们可以给这来添加一个注解,这个注解呢,但它不是来单元测试,这个呢才是单元测试方法,它呢,只是在每一个测试方法之前要运行,我们可以加一个北方each,每一个测试方法之运进行之前,它都要都要运行一下,那我们可以来。
03:02
继续来运行我们的这个单元测试。好,我们运行这个单元测试呢,我们会看见打印的呢,是测试就要开始了,先打印了它,然后再打印了我们的这个一,这是北方each,然后呢,还有一个我们这个呢叫after,那既然有北before each,那就有after each after each呢就是在每一个测试方法结束以后,我们来叫一个after each,那每一个测试方法结束以后呢,我们可以给它打印一下,这个叫测试结束了,好,我们来可以看一下这个功能来,最终在这继续来运行我们单元测试类,我们单元测试类呢,我们这个测试方案每次运行先打印测试开始,我们运行完了以后再打印测试结束了啊没问题,然后呢,再来加上我们来看一下它其他测试注解,既由before each after each,那就由北方all和after all与北方each after each的区别是什么?首先呢,北方each after each是每个单元测试之前都得执行,或者之后都得执行的。
04:08
而北方or和after all是所有单元测试之前开始执行,所有单元测试结束之后再来执行的,所以呢,如果我来这么来一写,再来写两个方法,比如wild,我们这个test,我们有一个叫before哦,我们把这两个呢拿过来,Before哦,然后呢,我们可以给它打印,我们打印所有测试就要开始了,好,打印我们这个打印呢叫所有测试测试就要开始了,然后呢,我们可以给它标注一个注解,叫北for啊,北for be for啊,然后呢,另外我们还有一个aftero来加上test,我们的这个aftero,我们可以给它打印,所有测试已经结束了,S out,我们的所有测试已经结束了,好,我们在这呢在来标。
05:08
辅助一个注写叫an after or,然后呢,我们来进行一个测试,然后我现在呢,在这个测试里边,我想了两个测试方法TEST2,然后呢,我们让第二个测试方法呢,我们就在控制台输出一个二,我们把这个复制过来,然后呢,我们这个测试方法二,好,那现在呢,相当于我们这个单元测试类里边有两个单元测试方法,而如果我此时这么运行,我直接在类上运行单元测试,那接下来这个类上的所有单元测试方法都会跑一遍来看一下最终的效果。好,我们在类上运行这个单元测试。好,我们现在呢,看到给我们提示提示说什么我们北方澳这个方法呢,必须是一个static,也就说是一个静态方法,所以呢,除非我们标注了一个叫test instance,比如说我们这个测试方法呢,它有一个实例,因为我们每一个方法,我们这个所有方法测试之前要调用它,所以呢,我们这个它只会被调用一次,所以我们一般是给它一个静态方法,我们必须呢aftero效果也一样,这样呢才能成功,我们重新来进行一个测试,走,而北方一尺阿塔一尺就不用,因为每个测试方法运行之前,他们都要运行,我们可以看一下,整个呢,大家看我们所有测试就要开始了,然后呢,所有测试结束了,大家会发现呢,我们所有测试呢,开始之前,北方奥运行了一下,@奥也运行了一下,而我们的这个北方each,每一个测试我们先打印二,再打印一,那先打印二的每一个测试前面都会打印一个测试开始,每一个测试后边。
06:48
都会打印,测试结束,那这就是我们before all与before each after all与after each的区别,当然还有其他的这些注解,我们可以按T给我们每一个测某个测试打一个标签,这个标签呢,就是相当于我告诉,哎,我们这个测试呢,属于哪个类别,这只是为了我们这个识别,我们还可以有一个注解叫at disabled,代表呢,我们当前这个测试方法在测试的时候可以不用执行,比如我们当前的这个测试方法二,我们可以把它禁用掉,那我们以前的方式呢,你把它删掉,现在我们可以用一个disable的注解把这个禁用掉,以后呢,我们再来跑测试类走。
07:29
那我们发现我们的测试方法二,它就会被禁用,画了一个禁用标志,那这就是我们的这一注解,那还有一个注解叫timeout,那timeout呢是什么?它呢就是超时用某一个方法want,我们test timeout来标注,当前呢是一个测试方法,而且呢,我们可以来at,我们给他标注一个叫timeout,这个timeout里边呢,们可以来给他声明声明,而且这是我们的5.7以后的这个呃效果,我们可以声明我们这个方法多少秒以后,我们就认为方法超时了,比如我们来写一个呃Y6,我们的值呢,我写一个五,然后呢,它的这个单位unit,单位时间呢,我们就来写啊time unit我们就认为是五秒,比如这有一个这有一个秒second,当然我们也可以写纳秒,也可以写毫秒,比如我们来认为毫秒吧,来写一个500,由我们这个方法呢,如。
08:30
那超了500毫秒,我就认为是超时,那接下来我们可以这么来做,thad.sleep我来顺上500毫秒,当这个sleep呢,我们在这儿来添加一个抛出异常,所以呢,我们会看到这个方法呢,要睡500毫秒,而这个方法等到它开始执行,到执行完,执行中间还要睡500毫秒,肯定超了500毫秒,所以我们来看一下会是什么样的效果,来直接我们可以直接来执行一下这个方法呢,走。
09:03
好,那么执行这个方法呢,我们发现呢,它没有任何问题,那我们这个毫秒呢,我们给它睡大一点来睡上600毫秒,那我们这个单元测试说明跑的挺快的啊。那么前后呢,相差已经不到一毫秒了,如果我们睡600毫秒,我们会发现,如果你的方法超时了,它会自动就给我们抛出超时异常,那么我们在这个里边规定方法,规定方法的超时时间,超时时间如果超出这个时间就会出异常,超出时间那么当前测试出异常就行了啊,所以呢,这是我们的这个测试包含包括呢,我们还有一个注解叫extend with extend with是什么呢?这是为我们测试类提供我们这个扩展测试功能的,这个呢是类似于我们以前用解UNIT4的时候使用过这个注解叫wrong with,这个wrong with呢,我们鉴于我们以前的spring BOO版本,比如如果我们在这创建一个新的spring BOO项目,那我们以前的这个spring book的版本呢,我们要做单元测试,要写wrongways们要以spring的这个测试类启动起来,而我们现在呢,就没有这个wrongways,替代它的是extend withs。
10:16
那类似于我们看到如果我们想要测试spring boot单元测试,大家注意我们这个单元测试不具有spring boot的自动注入功能,如果我来写了一个这个东西,然后呢,我在这个测试类里边,我让他再来打印这个东西,来看他能不能打印过来走。那我们会发现呢,它打印为空,像我们容器中的这个组件,它拿不到,拿不到呢,因为我们当前这个测试类它呢没有整合spring boot里边,相当于没有使用spring boot的测试驱动来测试,我们想要使用spring boot测试驱动,我们只需要一个注解叫spring boot test,所以我们想要使用spring boot中的容器功能,那我们就需要加一个spring boot test注解,而这个spring boot test注解其实它是一个符合注解,这个符合注解里边呢,其中就有我们的这个叫extend的位置意思,意思呢,我们以后下面这些测试是使用spring的整个测试驱动来进行测试的,这就是我们说的extend的位置,那我们也可以想对接其他平台,其实我们就是相当于要对extend的位置这一块的东西要来做定制开发,那这是我们说的常用的一些测试注解,那我们应该还是忘记了这么一个测试注解,我们再来给大家补充上另外一个测试注解。
11:41
An test,好,这是单元测试,然后呢,我们让它输出,输出我们的这个五,然后接下来我们可以使用这么一个注解叫repeat test,然后相当于这是一个重复测试,重复测试呢,我们可以在这告诉他的这个重复的次数,比如呢,我们想要把它重复测试多少次,比如我来写一个五次,然后我们这个测试呢,它会自动运行五次来直接运行来看一下我们的效果。
12:10
虽然模拟我们测试一个功能被多次进行测试,哎,我们一旦一对接spring boot的这个单元测试它呢,就要加载spring boot整个容器过程。我们重新来走一下,那现在来测试这个五好,我们会发现TEST3这个方法呢,就被测试了五次,那每一次呢,北方一尺after each都会执行,那么整个这个测试我们就结束了,那五次的总结果呢,在这儿也有打印,这是我们说的所有基本常用的测试注解。
我来说两句