00:00
接下来我们来完善一个组件啊。这个组件啊,我们观察一下咱们这个的这个po文件。The unit这个东西咱们是不是还一直还没用呢,对不对,除了这个解unit之外,是不是其他的包咱们都用到了,来看看啊,Third that是不是用到了对吧?啊接SSP啊,MYJSTL啊,杰克逊这个工具对吧?MY白的驱动包log间看日志对吧?好,呃,这个build啊,Build这句必须得加,它的这个作用是让我们在source下的啊,Properties文件和MY组配文件生效啊,OK吧,这也必须得加啊,那将来我们有可能还得加一个东西,我们现在其实默认的那个JDK啊,你别看man上面给你标识的是多少啊,你看啊。那上面给你标识是1.8呀,但其实每一次我启动服务器的时候,同学们是不是能看到咱们现在1.5对不对,其实啊,咱们也可以做一个这个build啊,把这个1.5变成1.8的那么一个标识,OK吧,这个东西咱们在网上能搜到啊,这个老师明天给你们提供一下啊,提供一下咱们直接粘过来就行了,给他变成这个1.8就行了,OK了,这没什么好说的啊啊最重要的不是说我们这个JDK本身啊,而是什么呢?咱们这个啊。
01:27
Java意给我们提供的这个web开发包serve LA,咱们用的这个版本需要高一些,OK吧,好,咱们用的这个serve LA是是多少呢?看是不是四点几啊对吧?啊行,我们来看看这个解unit啊,一直没用呢,这解unit啊叫做单元测试啊,单元测试这个测试啊,Ma给我们提供了这个test对吧。好,直接来这个使用一下啊。以前咱们测了一个这个settinging对不对。
02:02
咱们再来一个work啊。再来一个包。我去跟他平级呢,对不对,好,这里边有个test啊,咱们在这里边啊,也来一个这个test。好,这个test包下咱们来,对啊,比如说市场活动咱们一套都做完了,对不对,对于这个市场活动啊,啊进行一个这个测试,好,那么大家注意啊,我们现在给这个测试的这个文件起的名字啊,是我们的activity这个模块的名字,加上大写的T,小写这个ESD啊,Activity这个。Test OK吧,好,那么我们现在来看大家注意啊,这个解unit啊,老师来做一个啊,这个简单的这个介绍,其实这个版本啊还是挺多的啊,比如说我们来找一下mav啊。
03:08
嗯,我们搜一下这个解解。You。点一下。你看这个版本是不很多呀,对不对,但是不论是什么版呢,大家注意啊,现在这个三点几的啊啊,现在只剩这个3.7和3.8了,现在在企业里边肯定是不用了,OK吧,我们现在肯定是用这个4.0或者4.0以上的这个版本了,OK吧,好,这个是需要注意的啊,那么咱们这个解决问题的是啊,最重要的是支持一种叫做这个注解式开发的这么一种方式,注解式开发啊。竖起。是开放啊。
04:02
呃,以后这个注解式开发啊,会应用在咱们这个框架当中,OK吧,尤其是在我们学习完了spring mvc之后啊,Spring m Mac会跟什么呢?啊,使用spring框架将我们spring Mac和MYBA,然后进行一个整合,用注解的形式来进行开发,OK吧,其实注解这个东西啊,我们以前接触过对不对?作叫什么?怎么没听?这我把这个A变成大写,熟悉不?行啊,误会你们了啊啊行,确确实确实没听过,但有一个东西你们肯定听过。哦啊。喂,是这样吗?哎,这个听过,那这个圈也叫什么呢,同学们。
05:00
哎,是不是叫注解啊,哎,注解跟注释不一样,OK吧,啊不一样啊,绝对不一样啊,注解是一种开发方式,其实是能够翻译成咱们这个加源码的OK吧,好,将来啊啊,我们在这个下一个阶段这个学习啊,肯定啊要学习使用这种注解式的这种开发,OK吧,那么我们这个j unit啊解unit以前呢,其实不是这种这个注解式的开发,呃,到这个4.0以后呢,其实就支持这种注解式的这种测试的OK吧,它所用到的标签是这个啊艾符加一个。这个test test OK吧,TST,好,比如说我们现在来测试一下这个添加的这个方法跟我们那个主方法很相似,咱们那个主方法返回时是不是一个avoid。对不对,比如说我们先来测天讲啊,大家注意来个test,来个C行吗?好,Test thing,诶我要在这个方法中进行一个相应的市场活动的添加的这个测试,OK吧,因为这个解忧它本身来讲啊,它就叫这个单元测试啊。
06:16
测试,哎,有有同学看到我这个这个方法跟我们这个组方法,哎,是不是还是不太一样,除了这个返回值对不对,但是这个单元测试这种东西啊,既然有我们这个主方法。那为什么还要有他呢?同样都是测试,是这样吗?单元测试啊,是未来实际项目开发中啊,用来代替我们这个。主方法,主方法就是咱们那个面方法是这样吗?啊,哎,没行,既然要代替这个面,那么我们马上分析的是,就是这个men,它到底有什么不好用的地方,所以要替代它是这样吗?这个main大家注意啊,我们在测试它的时候需要注意的是什么呢?我们每一次测试一个新程序的时候,是不是应该把以前的程序应该给它注释掉啊,对不对,也就是说main方法。
07:15
它就是一个程序执行的这一个入口,这个没问题吧,通过这个入口,你程序在没方法中跑完就跑完了,你同时只能测试一组程序,能理解吧。能不能理解老师意思一组程序,但是呢,咱们这个解unit呢,能够同时测试。多组程序。来,比如说我在测一个什么呢?Test什么,同学们update,注意看老师这个写法啊,我在给这个测试类命名的时候啊,我先写了do面的名字,大写的T,小写的EST OK吧,我们习惯于这么写啊,当然了,这个如果按照标准来说的话,肯定这么写。OK吧,但是以后你在企业里边,你同时要用到那个杰里的时候啊,有可能就我按照这个习惯来写,你也不要去说人家OK吧啊跟我们不一样,我们是什么?我我们是黄埔学校毕业的,跟他们不一样,你知道吗?我们所有东西都得按规矩来啊,来active t test,然后这个方法的这个命名呢,同学们,咱们给起个什么名?
08:21
Test save这个T是小写的test开头看到没跟上面类的这个命名啊,正好相反,然后后边是咱们这个测试的这个功能的名字,OK吧,好,我可以同时测试添加修改,还可以同时测试一些查询等结果,OK吧,那它的好处是什么呢?哎,我我能能够同时测试这个多组程序,也就是说啊,这是一种什么呢?这是一种多线程的机制,大家注意啊,这三个方法啊,其实是。在测试的时候同时执行的,能理解吧,同时执行的。
09:01
OK吗?这三个方法啊,彼此之间啊,是独立的啊,OK吗?谁也不会影响到谁,那它最大的好处是什么呢?大家思考这个问题,老师那没方法,不能这么做的话,我把上面的给注了,然后我再测下一个,第二个测完之后我再给注了,然后我再测下一个不行吗?不行吗?行啊,完全没问题啊,可以啊,但是你可以想这么一个问题,大家注意啊,第一,你注射掉的这些代码,以及你main方法中的内容,按照我们之前这个理解,是不是随时随地的就可能把这个里边的东西给丢了?是随时随处的就给干掉了,或者是找不着了,是这样吗?这是一个大家注意啊,再有一个是什么呢?我们在做这个测试的时候,往往啊。不是说测试一次就OK了。什么意思?比如说我现在来测试,我现在在一个这个模块中写了30个功能,这30个功能我在main方法当中测一个注一个测一个注一个,测一个注一个,是这样吗?好,那么大家想一想,我这个模块进行维护了。
10:17
有可能啊,有一些这个啊,有一些需求之间的粘合性比较强,我在维护啊这块需求的同时,有可能会影响到其他需求了,能理解吧,所以说你在改正了一个需求之后,是不是有可能你会影响到其他29个需求中的某一个呀,咱们是不是从头到尾重新测一遍呢?能理解老师意思不?OK吗?然后测完之后,你是不是还得按照没方法的形式测一个注一个,测一个注一个,是这样吗?好,有一天客户提出新需求了。我又得修改去维护某一个模块,维护完之后其他的模块你是不还得算啊。正所谓ABCDEF模块都是好使的,ABCDEF需求都是好,都是好使的,但是你把A改了,是不是有可能B和C都不好使?
11:08
遇到过吧,你把B改了有可能什么呢?D和E就不好使了,完全有可能对不对,所以说每一次我们改完啊,在做完维护之后啊,咱们这个系统啊,都需要重新的测试一下,对不对?好,但是大家注意啊,如果我们养成了一个良好的习惯。啊,我们把什么呢?这所有的这个啊需求啊,以这种啊,这个测试的这种这个解用的方法一个一个呈现出来,第一是什么呢?我们按照这个标准,这个模式来写,Activity test测试的就是市场活动,那么我们的这个clue test,我们测试的就是这个线索啊transaction test测试的就是交易的模块,是这样吧,好,这里边怎么列出来个什么呢?比如说你不30个需求吗?啊,我在这里边就列出来30个这个业务的方法能理解吧,给你列出来30,这30个大家注意啊,它是能够干嘛的。
12:01
一起测试一起执行的,能理解吧,好,也就是说啊,每一次你在改完这个需求之后,我是不是打开这个类右键执行下结果里头一起测一遍,如果都通过就OK啊。能理解吧,哎,这就是一起测试的这个好处,OK吧,而且呢,这个方法与方法之间啊,这几个测试方法之间是不互相受影响啊,OK吧,好,这点很重要啊,好,首先呢,我们先来一个什么呢。S out,大家注意看啊,上边你这个圈test这个是必须得加的,OK吧,这个我打一个123啊,我随便打的啊S。Out,我再打个什么呢?234OK了,你加上这个圈之后啊,大家注意啊,我们现在来一个test什么呢?废看到没啊,你要回答这个圈啊,其实这这这个东西它不能运行的,OK吧,或者是什么呢?咱们直接run什么activity。
13:04
T3,看到没啊,我直接来一个运行啊,好,大家注意看啊,123234,是不是这两个方法一起运行了,你可以脑补一下,我现在里边写了30个方法,这30个方法说一起执行啊,执行完之后大家注意看啊,如果你使用的是那个工具啊,是那个eclips啊,Eclipse用unit会给你列出来一个绿条,如果所有的方法都走通了啊,绿条表示的是通行,OK吧,但是在这个idea当中啊,它给你列出来是一个什么绿勾,看到没?是不是绿钩啊,对不对,好,这个方法OK,这个方法是不是也OK啊,好,这个类也OK,好吧,好,那现在啊,比如说我随便乱写一个啊,死经str等于一个空。Str掉一个点来,这回发生了什么,传说中的控制针对不对?好,咱们来看啊,找一个。
14:05
来看看啊,这回是不是相当于这个test save是OK的,这个test update它不OK,前面给你来一个什么呢。哎,这个啊,红圈加一个感叹号,那么在这个类上就有一个这个啊,红圈感叹号表示的是你里边有方法啊,执行不通过能理解吧,好,那么现在啊,老师来对它进行一个这个啊,添加方面的这个测试啊,我先把它先给注了啊。先把添添加测一下啊,我们来一个active ta等于有一个active可以吧a.set ID,咱们用u u I Du。来生一个a.set内,好,这个内幕我们来一个啊,宣传推广会行吧,跟我们之前发传单都不同对吧?行,比如说我现在就填了一个内幕,OK吧,好,那么我们以后在单元测试里边测的是哪一块呢?大家注意啊,咱们测控制器其实是没有用的,因为控制器是不是就是用来接收处理请求,然后做响应呢,对不对?报层有没有必要去测呢?也没必要,它就是一个单元操作对不对?买提示你配对了。
15:23
倒层就没问题,咱们以后测的主要是什么呀,测的是业务,能理解吧,测的是业务啊,咱们来。Service,来一个什么service factor get service对吧?出来一个activity service。IPOK吧,我们来个as掉一个点什么呢。这个这叫废物是吧,然后给我们返回了一个布尔值对吧?好,我把这个A啊传递进去,返一个布尔值,咱们来接收一下。Flag对吧,我们把这个flag啊给它输出一下啊s out,咱们来一个这个flag啊。
16:11
行,咱们再来测一下啊。好。来转下啊。哎,是不是都挑绿了。然后又返回处了,好,我们来看一看。这里边儿啊,咱们来找这个activity啊。诶是不是给我加了一个这个宣传推广会,哎,这一项啊没有问题,OK吧,那如果按照我们之前的那个方式啊,这个我们之前一些个这个老程序员啊,习惯于使用一种叫做断言的那种那种机制啊,我看看啊。这个东西听过没?断言以前接DK的时候接触过没?
17:01
没有说。我算我先给你们找一个那个方法啊。咱们就直接那个ES吧,行吗?E口什么叫这个断言呢,同学们。哎,他就像是一种什么预言一样,什么叫预言呢?就是说啊,我现在断定一下什么呢,大家注意啊,这个flag啊,它是一个处。断定一下,如果跟我断定的结果不一样,即使你这个程序是对的,那么我这个解用那测试也是错的,能理解吧,如果跟我们断定的这个结果它是一致的。哎,那么说明咱们这个测试它就通过能理解吧,哎,这就叫断言啊。行,咱们来测一下啊。对,就提前判断好啊,也就是说啊,呃,你的这个结果啊,和我们什么呢?和我们预想的这个结果啊,如果保持一致的话就OK了,能理解吧,他经常会使用在咱们这个添加修改删除这个方面,OK吧,好,我们来看看刷新,咱们是不是又多了一条宣传推广会啊。
18:17
对吧,好,那至于这个查询呢,我们很少使用这个断言的,这种提示很少,谁没事比对这些内容呢,一般来讲都是判断一下什么啊,咱们这个添加修改删除之后啊,是成功了还是失败了啊OK吧,好。这个就是咱们这个解unit这个东西啊,咱们在未来实际项目开发中啊,这个一定要用的,能理解吧,但既然我们这个man给我们提供了一个这个test夹嘛,所以说啊,把这个解用,那就写到了这个test夹里边了,OK吧,好嗯,这个东西啊,咱们找机会一定要测一下,今天晚上你测它就当做是放松了行吗?啊,也没有什么难点,OK吧,好。
我来说两句