00:00
在这个object类呢,讲完以后,我们这一章最后还剩一个内容叫做包装类的使用,那么讲这个包装类之前呢,我们想先给大家讲一个知识,叫做单元测试方法的使用。那什么叫单元测试方法,我们还是通过代码的方式呢,给大家来说明一下,诶一说呢,大家就知道什么意思了啊,你像咱们刚才那会儿呢,去测这个ecos的时候呢,发现一个情况,就是我们测的时候呢,我时不时的在这里边去加上一个线哈,就是因为呢,我们这个测试后边代码的时候呢,上边呢,也每次都跑一遍,所以导致呢,就有时候就看不清楚到底你测的那个结果是这个结果当中的哪一个了,那我们真正开发当中的话呢,也时常进行测试,那已经测试的这个内容的话呢,我们就不想再测了,我们就想把这个最好这个测试的结果呢,就是我想测这块,我就单拿这一块代码测啊,我想测另外一块,就单拿另外的一块代码测,这呢,我们就叫做一个叫单元测试啊,就是你想测试哪块代码,我们就单独的测试哪块代码,就叫单元测试,那单元测试怎么来实现,我们下边呢来谈一谈。
01:07
行,那这呢,代码也不少了,咱们给大家收起来,新再新建一个包,这个叫JAVA2,在这里边呢,我先建一个类,通过这个类呢,我们进一个说明,Java中的单元测试呢,使用的这个相关的API呢,叫unit,所以我这写个叫unit呢单元测试。是吧,Java中的啊JA unit单元测试行,那么我们主要关心的就是我怎么就能够实现这个单元测试了,这里边呢有相应的一些步骤,我们下面呢就来看一下这个步骤,我就一边写呢一边来操作了,首先我们呢需要选中当前工程,大家的话呢,可能你跟不上,你就先不用跟我同步操作了,我这把这个步骤呢都写出来,选中当前工程点右键,点右键呢有个叫build pass build pass下面有个叫I libraries点一下。
02:08
点完以后出来一个结构,我们这里边呢选叫unit,就这个unit,然后next默认呢叫g unit4就选它,然后finish一下,我们会看到呢,在我们这个当前工程下呢,同步的又提供了一个叫只unit这样的一个包,这是我们的相关的这个类库了,原来咱们使用的Java中的那个都在这里边儿呢,现在咱们相当于又添加了一个叫g unit啊,这是咱们说的这个第一步,首先呢叫选中当前工厂,注意啊,然后在这个功能下呢,我们右键选择叫build pass,然后build pass里边呢选择叫ADD libraries。行在这里边呢,你去选这个叫UNIT4,然后接着下一步就可以了。行,这呢是我们目前做的这个事儿,那做完这个事儿以后,我们呢,去新建一个类,这个类里边呢,咱们就想体会一下测试一些方法了,那这呢第二步呢,就是叫创建,创建一个Java类啊进行单元测试。
03:24
进行单元测试,那么这个Java类呢,有要求,此时的Java类要求我现在这样写法,其实就满足这个要求,但是呢,不排除有的同学写的时候呢,就乱写了,会出现这种这样这样那样的问题了,那这个要求是什么呢?第一个点叫此类呢,是公共的,你看我这个满足。然后这是第一个点,然后第二个说这个类呢,要提供一个公共的午餐的构造器,公共的午餐的。
04:03
构造器我这个是不是也满足啊,对,所以说呢,大家就直接这样就就就满足的,就怕有的同学呢,把这个删掉,或者自己呢,里边又写这个构造器了,导致呢这个出问题了,就是默认的时候呢,我们直接造一个,它就是用来测试的,就是一个单独的一个原文件,在我们eclip当中,你单独造一个原文件,默认的你这个类呢,自然而然就是public的构造器,你就不要写了,不是让这个类去造对象的,我们就是让他用来做测试的,所以呢,这个构造器你就默认这样让他去提供。这样就行啊,造完这类了,然后第三步呢,我们在此类中,此类中去声明单元测试方法,那么这个单元测试方法有什么要求呢?说此时的单元测试方法,我先写一个,比如说叫public。Wide,我们想测试什么呢?我想测试一下,关于比如说咱们叫呃叫叫叫equals也行,关于这个ES的一个使用,我就这样子写了一下。
05:12
那这个单元测试方法有什么要求呢?说要求此方法单元测试方法说方法的权限是public,然后呢,没有返回值。没有反问值类型啊,或者这个反问值类型就是一个VO了,然后没有行参。要求比较严格,我此时这个方法就满足要求,Public VO没有行参,然后呢,这个方法名呢,就是一个标志符了,你爱怎么起呢就怎么起,但是通常呢,咱们说尽可能的我们写这种单元测试方法的时候,就你想测试什么,我们习惯上都写成test叉叉叉,你想测什么呢,你就写test谁啊一般呢都是这样的一个习惯啊,还没完事,这个方法呢,写完以后,方法上面呢,需要加上一个注解。
06:08
哎,这呢,我们需要在这写个四吧,说此单元测试方法上CTRLC一下词,单元测试方法上需要声明一个叫圈test这样的一个结构,这呢其实是一个注解,这是一个注解,那我们这块呢,就把这个圈test呢给它加上,加上以后的话呢,这时候报错,因为这个T的话呢,它其实也是一个结构,这个结构的话呢,就来自于这样的一个包,所以呢,我们也需要做一个import,这样呢就进来了。那需要声明这个注解。然后呢,并。哎,并在这个单元测试类当中,哎,这个添加这个import啊,并在单元词类中,这个导入,导入谁呢,就导入它CTRLC,这其实也是一个现成的结构啊,在哪的呢?就是在咱们这个这个j unit里的,你看unit里边呢,这不有一个j unit这吗点开点开呢j org.j unit,这不就它吗?它下边你点开实际上呢,是有一个结构,就叫做test,这是一个注解。
07:29
哎,我们导入的呢,就是这个注解,我们主要呢是想用它,所以呢,咱们才会有第一步呢,去艾一个library,你要没有这一步的话呢,这不就导不进来了吗?哎,就这个意思行,那这块呢,我们就导进来了,那这样的话呢,我们下边这里边呢,就可以写这个代码呢,进行一些测试了,就可以进行测试了,比如说我这写一个string s1,我这写一个啊美眉,然后呢,我再写一个S2。
08:01
哎,又写了一个,然后此时呢,我们去测试一下S1.2equals这个S2,这个时候呢,大家把把它呢,你就可以想象成咱们写那个没方法一样,没方法里边的话呢,这不就是一个执行的,呃,入口,然后呢,这是一个出口,这就结束就完事了,现在呢,你怎么呃这块就涉及到第五个问题啊,如何去执行,嗯,或者这样说吧,声明好单元测试方法以后。那么就可以在这个方法体内啊,来这个测试相关的代码,这里你就可以写代码了,那么写完代码以后,这里写个六吧。写完代码以后我们怎么做的呢?叫双击选中方法名,点右键叫run as,这呢,不是Java application了,叫run as unit test。
09:03
啊,写完代码以后叫左键双击方法名,这个方法名是单元测试方法名。然后呢,这个右键。右键呢,我们叫run as,然后呢选unit test,这样的话我们去执行。那执行OK一下,这就出结果了,哎,这呢是我们这个console出来的一个结果,然后我们会在这个位置呢,看到一个叫G,这呢看到是个绿条。这个条的话呢,我们这相当于也是一个上面这个步骤了啊,下边是相当于一个说明说呢,呃,形象点说说,如果。如果这个执行结果没有任何异常,这个是绿条,就是绿的这样的一个进度条,如果呢,我们要这个执行过程当中出现这个异常了,它就不是绿条了,比如说你看这个我这样写一下,咱们呢这块我用一个string string里边呢,我放一个哥哥把它附给一个object,然后呢,我这个object呢,我就给大家强转成是一个date,咱们上午讲这个多肽的时候呢,提过这个事。
10:28
这个编译的时候呢,没问题,我要运行的时候呢,会出问题吧,对类型转换异常了,你看我这时候呢,得保存一下,我双击选中点右键run as点一下,你看这时候呢,它就是一个红条。也就是说呢,当我们这个程序呢,执行失败的时候,或者要出现异常的时候,这就是一个红条。如果执行结果出现一常这呢,就是一个红条啊,也比较形象,就跟说这个交通规则里边红灯红灯停,绿灯行一样,出来红的时候呢,你就得小心了,哎,这个很正常的一个一个理解,那这块给你打了个叉,哎,错误的信息是什么呢?在这儿呢,其实也显示出来了,是一个类型转换异常。
11:19
哎,类型转换异常。Class。Cast exception行,这呢咱们主要说的不是说这个异常的事儿,主要呢,就说这个单元测试方法,你怎么去理解它的一个使用,这是这么个情况,好,这儿呢,是咱们写的一个单元测试方法了,这个方法外面的话呢,我们这儿呢,可以定义一些属性,比如说我这int型的一个number,这是一个十。这相当于是一个属性了,这个属性的话呢,在这里边儿,咱们原来讲的时候说说我这要有一个变量是一个属性,在这个main方法当中,如果咱们想调这个number的话。
12:01
得怎么着啊,是不是得先造他的对象啊,然后通过这个对象是不是调这个属性啊,对现在的话呢,大家如果你想看这个number值呢,就不用说再去找对象了,直接我就可以调这个number。哎,直接呢就可以掉,其实这个原因的话呢,就是大家就把这个方法呢,你当成是一个普通的方法就行,你看咱们写盖塞方法的时候呢,里边也没有说去造对象,主要原因其实是因为这个方法它不是个静态的啊,咱们没方法是静态的,所以你必须要造对象了,这呢你就想象成是一个普通方法,比如说我这public word,我写了个受方法,受方法咱们在售方法里边是不是直接也可以去调咱们。这个number吗?哎,你把这个方法呢,你看成跟它类似一样,所以呢,我就可以直接掉了,哎是这种情况。
13:00
哎,这呢,我写个售售后方法,诶我呢不光可以在这个单元测试方法里边呢,去调你这个属性了,那这是一个普通的方法,我这呢也可以在这调,哎,我这呢就直接调一下就行了。然后还是双击选中点右键,这呢这就掉了一个收方法,那么回头呢,咱们测试代码的时候呢,大家呢,就可以直接呢在这里边去写,那你这块呢,写了一些代码以后,我说呢,不想测它了,我们想再换一波,换一波的话呢,你就再重新的去造一个单元测试方法就可以了,Word我这呢test一下,比如说叫兔TH的使用。哎,这不就这样写吗?然后在这里边我们再去这个造了一个这个对象,我直接呢,在这里边我out一下S2PR two斯顿。奥斜杠,哎,这这就OK了,然后我现在呢,又双击选中它去执行,这个时候呢,我们执行的是下面这个单元测试方法,跟上面这个呢没有关系,所以呢,我们输出的结果呢,只有你下边这个呢,这个呢就不考虑了,也就不执行了。
14:06
那么后续呢,咱们如果做一些测试的话呢,咱都都可以这样去用了,就相当于咱们原来写的这个这个这个ES里边呢,写的还挺长,咱们就相当于给他这一小波用一个单元测试,另外一小波呢,再用个单元测试就可以这样去做了,咱们写的这个项目的话呢,咱们原来写这个项目项目的话呢,比如说这个customer list,你想测试一下这里边儿这个增删改,查功能好不好,能不能用,有没有bug,那你就可以针对于每一个方法呢,都写一个单元测试。你跑一下看这个增删改查有没有问题,所以呢,我们在开发当中,在测试的时候呢,常常来使用叫单元测试。哎,测试一段一段代码,我们就给它封装到一个单元测试方法当中,这样呢去操作。行,能理解这个事儿哈,嗯,然后的话呢,这个呃,咱们要是真正用的时候呢,你看我这写的还是比较详细的一个步骤,涉及到呢,一开始把这个使用NEED4的library呢导进来,那其实这个大家呢,如果真正开发中用的话呢,也不用非得这么复杂啊,比如说比如说我换一个。
15:16
换一个位置吧,比如这个D12,咱们这个D12下呢,你看我这没有导入过,这个只有NEED4啊没有导入,我这呢就临时的来测一下,比如在这个结构当中,这个呢类也是个公共的构造器呢,也没写也是个公共的,我这呢也没有去导这个library,其实大家呢可以呢,直接上来的话呢,就写上一个test。然后public。Avoid,我叫TEST1吧,没有一个具体的意思了,这时候呢,它肯定报错了,就是你没有导包嘛,我这时候把光光标往这一放,它显示的不是一个inport了,而是直接让我们去导,这个只有NEED4,所以我点一下,此时呢做了好几个事儿,一方面呢,这块呢,帮我们把这个添加过来了,同时的话呢,对上面也import了。
16:07
所以呢,其实开发的时候大家就这样做,不用说像我刚才这样非常详细的一步一步的去操作了,行,这是这个事儿啊,嗯,这个我就把这里边就删掉,不要它了啊,就是简单的让大家体会一下,这个开发中呢,你就可以这样简单一点去操作,详细的来说的话呢,就是我们这里边写的这样的一些步骤。行,这呢,我们提的叫单元测试。
我来说两句