我们来看一下在加班里面怎么样进行单元测试。首先我们打开 idr 界面,然后在这里右键新建一个类,然后类的名字叫做 this 的解忧利特, 然后我们在这个类里面新建一个方法,叫做 test 一这个方法,然后我们输入 public void test 一, 然后我们在这个方法里面输出一句话,叫做这是一个测试方法,那么我们就输入 sout, 然后这里方输入这是一个测试方法,然后我们在这个测试方法前面加一个 at test 好,然后我们在这个地方点击运行。 好,我们看一下这个地方已经成功的把这个方法给输出到屏幕的下方。好,那么我们再新建一个方法, 这个方法叫做 before 方法,我们就输入一个 public void, 然后一个 before 好,同样我们在这个 b four 方法里面输出一句话,叫做每次运行之前都要运行的内容,我们同样输入 sout, 每次运行之前都要运行的内容。好,然后我们在这个方法前面加一个 atte before 好,同样我们再新建一个方法,叫做阿福特这个方法我们再梳一个 咖啡口味的阿佛特, 然后我们在这个 after 的方法里面再输出一句话,叫做每次运行之后都要运行的内容,我们输这个 so u t, 然后就是每次运行之后都要运 都要运行的内容,同样我们在这个 after love 前面加一个 at, 然后加一个 after 好,我们再次运行这个测试方法,我们看一下结果, 好,下面的结果是每次运行之前都要运行的内容,这是一个测试方法,每次运行之后都要运行的内容,那么我们的一个 f before 就代表 我们每次运行测试方法之前,那么我们都要把 at before 这个方法里面的内容都要运行一次,那么我们每次运行方法之后,我们都要把这个什么都要把这个 after 里面的内容都要运行一次。好,这就是一个加班里面的一个单元测试。
粉丝2743获赞1.4万

你在大街上问一百个程序员啊,问他们单元测试重不重要,可能九十九个程序员都会说很重要,但是呢,实际上真正能够把单元测试落实到位的,估计也没几个人 说单元测试重要呢。这个很容易理解啊,我相信没有人会反驳,对吧?能够在开发阶段尽可能的发现问题,减少 bug, 也能够让大家更好地理解业务,构思业务代码,对吧?这样交给 q c 的时候呢,也能够更加有底气一些。 但是实际上呢,很少有公司说能够把单元测试执行到位的,或者单元测试的覆盖率很低,除非有公司强制要求,对吧,跟绩效挂钩,那没办法,必须得写。那么除此以外呢,很少有人说啊,写单元测试,究其原因呢,大部 部分的同学呢,可能都会说啊,太麻烦了,累死累活的,好不容易写好了代码啊,还要写一遍这个单元测试,对吧?太费劲了,我用 pose 面跑一跑对吧,测一测不是更直接吗?写好了,入餐调研,看一看有没有问题就 ok 了,对吧? 这个呢,我也很认同啊,包括我现在很多接口的自测也都是这么干的。但是呢,有一个前提啊,这个是针对一些简单的接口, 那么对于一些复杂的接口呢,手机残疾比较多的情况,还是建议写贷款测试,那么一方面呢,不容易遗漏对吧?写贷款测试的过程呢,也是在帮大家梳理逻辑,能把八个的这个量降到比较低的水平。 二来呢,也是比较重要的,就是啊,可视化,那么对于一些大型的项目来说,每天的开发任务都比 比较繁重啊,你的自测的过程啊,如果没有留下来,可能后面就忘记了,正式提测之后呢,发现了问题啊,也不好排查,那么有了单元测试的代码之后呢,直接翻一翻就知道了对吧,但是这个场景有没有考虑进去还是比较直观的。 另一方面呢,对 liter 也是一个交代啊,我们日常开发过程中听到的比较多的就是啊,你到底有没有测试过对吧,犯了这么低级的错误,那么有了单元测试呢,至少能够说明对吧?确实自测过,只是呢,有些场景没有覆盖而已了,对吧? 可能有同学会说啊,如果遇到一些跟其他模块儿偶合的方法怎么办呢啊,那就要用到大名鼎鼎的莫克朗,可以用来模拟测试数据啊,组织入餐啊。当然,对于一些需要落库的数据呢,要修改数据的 的话呢,没法调用多层对吧?这个场景呢啊,也可以用这个墨壳来进行模拟,效果还是相当不错的啊,比你用这个 gaunit 要方便的多。好了,本期的视频呢,就是这些了,如果您对本期的内容呢,有任何疑问,欢迎大家在评论区给我留言,谢谢大家!

单元测试利器麦克头是当前最流行的单元测试麦克框架,它可以用来对系统组建货类进行隔离。让我们只关注代码的流程和结果,真正的实现测试目的。厉害。

不会写单元测试的工程师不是一个好工程师。大部分人真正写单元测试的时候会发现,写单元测试的时间往往比写真正代码的时间还要长, 那是因为大部分人没有真正理解单元测试的逻辑。首先,假设你写了一个函数 a, 你需要对他进行单元测试, 那么最直观的做法就是写一个新的程序,里面有一个 man 函数, man 函数调用函数 a, 然后看看返回值是不是你想要的结果, 这就是单元测试的全部内容。但是问题来了,上述的步骤太麻烦,比如还要写一个内函数,对吧?于是便有了单元测试框架。 基本每个语言都有这样的框架,比如 drawbar 的 j unit。 这些框架无非就做这样几件事, 一是怎么通过注解的方式标志什么是测试之前要做的,什么是测试之后要做的,怎么写测试用力等。 二是怎么用断言的方式来判断测试结果是否正确。说到这里,还有一个常见的问题还没有解决,假设这个函数 a 有一个参数是对向 b, 在函数 a 中, b 这个对象调用了方法 c, 也就是说函数 a 依赖于对象 b, 这个时候我们要用 mocking 模拟的方法模拟出这么一个对象 b, 然后对函数 a 进行测试。这个 mocking 也有相应的框架,比如抓我的 mockito。 下个视频我们再来讲讲 mockito 吧。

看完今天的视频,大运测试的大部分情况都能解决了。自动代码实现了一个发送欢迎邮件的功能。逻辑简单,传入页面要地址, 就会向这个地址发送指定内容的邮件。代码已经结偶了,接口隔离了依赖,并且可以通过构造函数传入进来,可测性已经足够了。我们来写测试。创建一个被测代码的实力 需要一个奥特 box。 我们并不想真的把邮件发出去,再去邮箱里检查一下邮件的内容,那就不是单元测试了。我们来构造一个假的 box。 接着我们来调用发送欢迎邮件的方法。 然后呢,我们到底测什么?其实我们需要测试的是代码有没有正确的通过依赖发出一封特定的邮件,谁知道有没有发出一封特定的邮件呢?这个假的依赖指导我们在剩的方法里记录一下是否调用和发送的内容, 然后提供一个方法验证一下。 然后我们在测试里调用这个假依赖的 wifi 方法就可以了。 运行一下测试看测试通过了。我们改一下这个测, 就是来看看测试是否会失败。测试失败了,说明这个测试是有效的。同样,我们可以使用魔 catto 来创建假依赖。 最后用 wifi 来检测方法的调用。这里我们用阿根本的开普特来捕获参数。 最后我们来教一下参数是否符合预期。 同样,测试通过了。怎么样?看明白了吗?我们来总结一下。 这里我们的背册代码只有一个依赖。与之前不同的是,我们并不向他要数据,而是委托他完成一件事情。我们写单元测试还是 去调用他,但是没有任何可以返回的状态,让我们来去做断言。数据变化都通过依赖到代码外了。这种情况我们首先还是接口隔离依赖, 然后提供接缝,可以把依赖替换掉。测试时,代码会委托给假依赖,这样假依赖就知道了具体发生的情况。假依赖这里呢,会发生断言。我们把这个假依赖叫做默克, 这类测试叫做行为测试。掌握了 stop 和墨客工作中百分之九十的单元测试就都能处理了。

学会三种墨客方案,告别对后端接口的严重依赖,再也不影响我们的开发效率。方案一,代码侵入,直接在代码中写死冒客数据,或者请求本地的解锁文件。方案二,利用借口管理工具,比如 rap yapp 配置功能强大,接口管理与冒可一体。方案三,零 chose 飞的了懂代理工具,将 url 影视到本地文件,或者呢?第八个,莫备 uro 修改影响数据。

老师,我想问一下那个默可做数据是怎么样子的?默可做数据其实其实也比较简单,因为现在有很多这种现成的默可工具,然后直接去虚拟出来一个接口。也比如说啊,我要对接支付宝,但支付宝呢?我要花钱,然后我没有去对接他,那我就支付,用支付呢,我就可能返回一个错误的页面,但是我要去 支付成功之后拿到这个支付的结果,去进行后续一个订单的查询。那么这是我必须要用支付的接口,我就可以用那个默可服务来模拟。假如说这个默可里面有一个支付宝的支付成功的一个接口,假装他有支付成功,先给我返回一个结果,我拿到这个结果之后直接去做后续一个测试就可以了。所以呢,这个默可就是一个虚拟的假的一个接口。 嗯,对,所以呢,有很多的工具都可以做入墨客,反正就是像菲特的鞋也可以。菲特也很简单,比如说我们做做这个断点,你就可以看一下菲特的这个响应断点,他也是可以做墨客的这种啊。嗯嗯,我们那个辅助课程里面是有的,对菲特的响应断点可以去看一下。嗯,好,嗯。

hello, 今天来给大家介绍一个 idea 懒人必备插件 square test, 它是一款自动生成单元测试的插件, 会用到它呢,也是因为之前公司上了代码质量管控的指标,会考评各个项目的单元测试覆盖率。那我们先来下载一下插件,那我在这呢选择 settings, 然后选择 pluggings, 然后复制粘贴,选择这样的一个 square test, 然后安装就可以了。那重启 id 之后呢,菜单栏这边就多了一个 square test 的一个选项, 那该怎么使用呢?比如说我这边有一个 unit service 的类,里面呢有几个方法,我现在要为这几个方法去生成他的单元测试类,那该怎么去生成呢?比如说我右击,然后有一个 generate, 然后这里面多出来 两个方法,那我们选择第二项呢,他就会弹出一个框,这边呢他会自动识别出当前内需要默克的成员变量,我们可以直接点。 ok, 那它自动呢,就会使用类的真实目录层次,在 test 文件夹中呢,给我们创建一个呃,单元测试类,类名呢,就是原类名后面加 test, 那这样是不是特别的方便呢?秒秒钟就达到了代码覆盖率到百分之九十以上。那如果说大家想要这样的一个 demo 以及之前的 demo 的话呢,可以到这来这,然后给他去发一个消息,像这样就可以拿到我们的 demo。 好,今天的一个分享呢,就到这。

什么是 mark 服务? mark 服务是一种用于模拟 api 接口的服务,可以模拟不同类型的请求和响应,并对接口进行测试。 mark 服务通常用于早期开发阶段或测试环境中进行测试,以便减少对真实服务器的依赖。

好了,那么接下来呢,我们来为同学们呢介绍一下单元测试,那我们说过单元测试是对程序是不是进行测试的,嗯,好,它具体是什么样子的呢?它的单元测试呢,就是针对最小的功能单元编写测试代码, 并列测试代码干嘛呢?是不是测试我们的程序的正确性呢?那么加号程序的最小功能单元呢?是方法,因此呢,单元测试就是针对加法的方法的测试,进而呢检查方法的正确性。 好,什么意思呢?比如说这个企业里面呢,你开发好一个系统,它里面可能有成千上万个方法,那我怎么去确定这些方法他有没有问题呢?当有的时候我开发的时候,我就,我就会去测试他有没有问题啊?那个只是你自己是吧?在写的过程中做了一些细微的测试,但是一旦 整个项目做完之后,那么别人有没有影响你的方法,或者说以后你的系统在其他地方去部署的时候,新环境你是不是还是要测试一次的?你怎么能确定你的系统在任何地方都不出问题呢?你都要进行什么是不是方法这些性测试啊? 这样才能保证你整个系统是不是更加的稳健啊,然后不会出 bug。 所以编写测试代码是很重要的,那我们一般是针对方法测试啊。好,那咱们目前是怎么去对我们的这个代码进行测试的?嗯, 咱目前对咱们代码进行测试,是不是咱们自己去写了一个闷方法呀?然后呢就去调什么,是不是调这个方法,然后看他跑的结果对不对?有没有出异常吧?对,咱目前就是这么干的。那么你目前这样去测试这个方法的话,会存在什么问题呢?好,首先我们的内中是 只能写一个闷方法呀,那如果一个方法测试失败的,其他测试方法会受到什么影响?比如说我去查这个所有学生的时候,结果在查所有学生的时候崩了, 那后面这些方法有没有机会跑了?没有就没有了,所以这样并不好,对吧?那有人说我每一个都加个拆盖机,那是不是很麻烦呢?好,所以这是目前存在问题。还有一点是什么呢?他无法得到测试的结果报告,需要成员自己去观察观察这个测试是否成功。 也就是说他直营一个,你是不是要去控制台看一看呢?他没有办法生成一个测试报告的。而且在企业里面你项目上线的话呢,如果你在这个服务器环境去测试的话,那他可能是没有控制台的, 那你这个测试信息你怎么去收集呢?所以他没有测试方法不方便。好,第一三点的是无法实 自动化测试。什么叫自动化测试呢?你想以后我们的项目它里面的方法可能有几万个方法。那你,你不可能说每次是不是一个人去跑啊?你是不是到处去找没有方法去跑啊?那你测试一次的话,你可能 是要跑一天呐,你到处去找累,到处去跑,没有方法,那怎么靠谱呢?那我们如果用用我们的某些技术的话来进行测试的话呢?人家做的话,测试的意思是这样的,人家可以一键把几万个方法全跑晕,直接按一个按钮,然后就全部一个的测试, 知道了吧?他可以,所以说我们问法是不能实现自动化测试,而以后人家有些技术是可以实现自动化测试的。好,那么既然我们说目前的这种测试方式不好,那么就要知道单元测试有没有一些比较好的方式进行呢?有叫借用那些单元测试框架, 这是一个框架,那么经历呢?是使用加语言实现的单元测试框架,他是开源的,也就说他是有什么前人或者一些 牛的一些公司是帮我们做好的一些技术给我们直接使用的。对,好大据啊,加纳开发者都应当学习并使用简体编写单元测试代码,对我们的程序进行测试,可以说他已经形成的加纳标准测试知识,标准测试技术, 也就说全球所有的乘务员可能对代码对加代码进行测试,可能是不是都会用到这样一个工具啊,这样一个框架来进行啊?那么此外呢,几乎所有的 idea 开发工具,就是 id 一开发工具啊, 都会集成我们的节能题,包括咱们 idl 是不是也会集成节能题框架啊?这样我们可以直接在 idl 中编写并运行节 具体测试。也就是说咱们的 idl 其实已经整合了这个知识啊,你可以直接拿来用的。那么吉利目前最新的版本是五,但是咱们可能会用四,因为同一门的这个 idl 有的版本是比较老的,它可能里面整合四整合的是比较好的。 那你用五能用四其实都可以,就像我们用 j d k 八或者用 j d k 十一,可能我们用的技术是不是还是一些经典技术啊?没有关系,对吧?好,那我们到时候可能会选择用 j d k 四啊, 那么锦鲤这样一个单元测试框架来帮我们进行方法的测试,他有什么优点呢?好,他优点是这样的,他可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法,也就是说在某种程度上,人家是不是可以实现自动化测试啊?比如说我项目要上线之前,我把急用题刨一把,他就 可以把我的项目里面所有方法全部测试一遍,他是有能力全部做到测试的,这样我就可以知道我的所有方法到底哪些成功,哪些失败,对吧?或者我的业务一旦修改了,我,我没有安全感,我也可以再测一次。 那么第二点是他可以,他可以生成什么呢?全部方法的测试报告就哪一方法正确,哪一方法失败,他都会给你显示出来, 他可以一键生成测试报告。然后呢,他的这个形式就是这个样子,是吧?比如说这个方法失败的,他是红色的,成功了就怎么样,绿色的,他都会很明显的提醒出来啊。那第三点是单元测试中的某个方法,如果测试失败的,他不会影响其他测试方法的测试, 因为他的每个方法可以说都是独立进行的。然后呢,即使抛了异常或者失败了,他不会干扰别人的,别人的方法的这个测试啊,所以他是很灵活的。好,关于 精力单元测试框架呢,我们就介绍到这,接下来呢,我们来总结一下,那么精力单元测试是做什么的?嗯,他是测试我们是不是方法的正确性的对,好,那么精力单元测试的优点是什么呢? 首先人家是不是可以实现某种程度的自动化测试啊?他可以选择执行哪些测试方法,或者一键执行全部测试方法的测试,但是你一定要注意啊,前提是你要写测试方法了, 公司里面你的项目做完之后,你还要写一些测试方法是不?来测试你的情谊中的方法有没有问题啊?他一般是一个方法对应一个测试方法, 到时候你才能去一键把这些测试方法跑完的。那第二点是只有你可以生成测试报告,如果测试良好是绿色,如果测试失败是红色。第三点是单元测试中的某个方法测试失败不会影响 其他测试方法的测试,当然他有很多的优点啊,我们这里只是说一些大家能够直接能看懂的一些优点啊,那我们先认识他对吧?我们就说到这下节课我会带着同学们呢去用节省力,是不是进行快速入门啊?来教同学们如何去测试方法。 好,咱们呢就先说到这,好在上节课呢,我们已经为大家介绍了单元测试的一个概数,那我们知道他是对那种方法正确性是不是进行测试的,那么接下来呢,我们要带着什么呢?去快速入门啊? 那我们知道单元测试我们用的是什么?是不是用的是杰伦尼这样一个框架啊?那我们怎么去用他对方法的预计结果或者针对性进行测试呢?好,那我们首先分析一下,那我们第一步一般来 会将框架的架包是不是导入到项目中啊?对啊,这是别人第三方做好的技术,一般是不是都要倒进来,那么这架包呢?我其实已经放在课件里面,那第二步我们要做什么事情呢? 第二步其实我们就是相当于是要把这个盈利驾包是不是放到一个来宝包里面去,然后把它再加到我们的依赖库啊?还有印象吧? 好,那大家注意啊,我们埃利尔通常已经整合好了节省力框架,我说过他是不是属于标准测试框架,那一般来说我们的工具会整合好他,既然工具已经整合好了,我们一般是不需要自己去把这个驾包考进来的。 一般 idr 是有的,但是我们会发现很多同学的 idr 呢,他其实并没有提前就把这些价包呢下载下来,他虽然能集成,但是没有下载。所以说大家在用这个经历的框架时候,你最好先怎么样?先联网, 第一次联网就可以了,他会帮你把这个价格下来,自动下来,从此以后你就再也不需要打了,知道了吧,但如果你第一次联网下载失败的话呢,那就麻烦一点点,那你也可以采用什么? 是不是采用手工导入两个架包就可以了?这两个架包我待会会给大家的,大把这两个架包考虑到你的什么项目的来本里面去,然后把它加到依赖库啊,跟我们之前导法是一样,这真的鱼是没有整合好的情况,你最好联网整合好就可以了啊。 好,那我们第二步要干嘛呢?第二步我们就可以编写测试方法,然后该测试方法必须是公共的无参数、无法位置的非静态方法,也就是说要做成实力方法, 意思就是说这个方法只是帮咱们去刨一刨,调一下某调一下我们自己写的方法对不对就完了,所以他的要求是公开,无参无返为止。第三点是我们要在侧 方法上使用一个叫 ad test 注解,标注该方法是一个测试方法,那你加这个 in test 注解是非常重要的, 这个才是能够真正声明,是不是这个测试方法是一个测试方法呀。第四步呢,我们在测试方法中完成被测试方法的预期针对性测试。 好,这有点绕,但一定要注意啊,测试方法他只是一个什么工具方法,他是对你项目中的一些功能方法是进行测试的,是吧?所以我们应该在测试方法中完成被测试方法的预期执行性的测试,比如说你可能只是调一下,看看有没有抛异常 或者预期,这个方法应该返回一个什么结果给你,这个都可以用一些程序去实现。那最终呢,我们要选中测试方法,然后呢选择节能体运行,如果测试良好是绿色,如果测试失败呢,是红色。 那么这就是我们单元测试的一个快速入门的过程。好,大概明白这个过程呢,详细的使用,咱们还是到什么 id 中心演示一下。好,那我们从这边呢,打开我们的 id, 在 id 这个位置呢,我已经为大家建好了一个模块,这个模块呢是单元测试反射注解和做代理应用的意思, 在这边呢,我已经为大家建好了一个包,叫第一杠 unitty。 那我们来思考一下,我们用解 unit 做单元测试。首先我是不是要有一些业务方法呀?对,为什么要有业务方法呢?因为我是对方法真实性进行测试的,你要给我一些方法,我是才能对你进行测试啊。对,所以我模拟的一些业务方法啊。 那这个业务方法呢?是干嘛呢?就是帮我们呢,用登录名和密码是不进行登录的,登录成功就成功,登录失败就失败。然后呢,我这里面可能还有功能呢,是查询所有用户的名字。 那以后开发手这里面可能会有四五百行代码,可能是会出异常啊,所以我在这里面呢,直接写了一个异常模拟这个方法,是不是到时会出 bug 啊?好,那接下来我们要对他们进行什么 正确性?是不是测试?那怎么做呢?按照节律框架的观点,你首先是不是需要单独写一个测试类,然后写一个测试方法呀?知道,因为你要写着代码才能做测试啊,所以我们会在这个地方呢,右键另一个类,那么这个类呢?我们一般把它叫 test, 加你的业务类的名字 use service, 这样就代表我们的测试类是不是已经有了?测试类是独立出来的,所以他要单独写的。然后呢,我们第二步要干嘛呢?第二步是要写测试方法啊。好,我们一般采用什么呢? 一个业务方法对应什么?一个测试方法都有自己专属的测试方法。那我们应该怎么写测试方法呢?好,其实我们可以这么写啊,他应该是一个公开的没有返回值的,是不是也没有参数的?而方法名我们一般习惯性的把它叫 test, 再加上被测试方法的名字, 这样别人一眼就知道你是对按照登录名进行登录的。这个方法是不是进行测试的?对,好,测试方法呢?注意点,我来为大家记录一下。 第一点是什么呢?它必须是公开的无参数,然后怎么样无返回值的方法。 好,这是关于测试方法的注意点啊。第二点是什么呢?好,一定要注意一下,测试方法 它必须使用 at test 注解是标记啊,所以说还要注意按照框架的使用来看的话,我要用 attic 注解,这很明显是不是属于别人框架的东西啊,我是不是应该把急用的框架导进来啊?但是我刚刚说过了, idl 其实已经是不可以自动整合节能力框架,所以我们不需要倒进来啊,你不需要说在这里建一个莱宝包,然后怎么样再把驾班考进来的,它可以自动集成的。那怎么做?你直接写一个在这个地方。 好,那现在肯定是没有倒进来的,对不对?他虽然说 ida 可以集成,但是没有把这个价包关联进来的。那么当第一次倒的价包的时候呢,建议你们联网,那这样你的 id 如果没有这个经济框架的话呢,他会去网上把它下来,知道吧,以后就不需要再联网, 就永远就有了。那怎么做呢?好,我电脑已经联网了,我只要按二的键加回的键。他这边是不是有一个接力四和接力五两个版本的?那两个版本的都可以用法的,其实都差不多, 那经历四呢?比较稳定,大家应该知道老版本是不是相对来说比较稳定啊?是,所以我们就用经历四。好,那我就选择第一个,然后呢一回车他就说我要把经历四导到你的。什么,是不是导到你的项目中来啊?那我就直接点确定呗。 ok, 直接这边点确定就完了。好,这个时候大家会发现下面就会出现一个金绿色的一个什么框架包,是这两个架包,我这边是不是也已经可以使用了?是,已经倒进来了,那朋友们如果倒失败了怎么办?你可以把这两个架包是不是考到你这个 level 里面去,再把它添加到依赖库也可以啊?对,也行的,那也是一种方法, 所以我到时候把这两个价包发给朋友们的。好,那这样我的这个测试方法其实是不是有了?接下来我要正式进行什么是不是业务功能的测试了?那么业务功能怎么测试?是不是应该是要创建一个业务对象, 因为这些方法都是什么实力?方法是要拿对象掉,然后呢,我再来掉他的一个方法叫 login。 假如说我现在认为登录名是 at 密,密码是一二三四五六。 好,我这是一个正确性的一个测试,也就说我认为我这次测试是不是要登录成功啊?很明显,我一开始就确定的是 s b 和一二三四五六嘛,那我这边就怎么样, 是不是可以拿一个电量去接他这个登录的结果呀?对,好,同学们想一想。那么我现在预期这个结果应该是正确的,但是团队开发的时候,我的项目 代码是不是有可能会被其他成员动啊?大,在一个项目里面开发,那万一别人把我的业务动了,我这个方法是相对就出了 bug 啊,我这边是不是要反应出来啊?所以经历夸奖,其实他也提供了一种叫预期正确性测试的一个知识点, 你可以去测试你这个结果是不是你预期的结果,如果是测试通过,如果不是呢?测试失败,他不一定非得说看这个有没有异常的,他也可以预期正确性测试,那怎么来进行什么呢?怎么进行 预期结果的正确性测试呢?好,他用了一个知识叫淡眼 大奖。断言什么意思?断言是不是预言呐?我断言你将来怎么样,会出人头地,是不是?这个意思?是,所以说你要进,那你说我现在要断言这个 rs 结果是不是应该是登录成功?万一 以后代言失败说明怎么样?别人是不是动了我的业务啊?对啊,肯定改了我的数据,对不对?我可能一定要这个数据吗?来怎么代言呢?人家仅用的框架也提供了一个东西给大家,大的可以了解一下,我们毕竟是快速入门,我直接带大家用就可以了。他有一个类叫阿瑟特,这个单词就是断言的意思, 是不是这个人家的框架提供的?对,肯定在框架里面,可以去找一找呢?答个经理题,然后呢,在经理这个下面,是吧?继续找 在这里,对吧?然后呢,你看这里有一个是不是叫 authort 呀?断眼,你可以直接调这个,它里面有个方法呢,叫 authort s e r a s s 一二七,然后呢?有个叫 equers, 是代言结果相不相等的问题啊,你看他可以呢,填一个 什么?期待值和实际值,是不是代言这两个结果是不是一样的?对,然后你你,你看这个,他有个期待值,实际值前面还有个消息,我们一般用这个方法,前面这个消息代表是代言失败提示的消息。好,那我们应该怎么办呢?在这地方,比如说一旦代言失败,我的这边提示 您的怎么样?您的公认业务数据是不可能出 bug 啊, 或者就说你的登录业务可能出现问题,是不是提醒别人有这个错误?然后我们刚刚说过了,你要代言结果的话,你是不是应该填一个你期待值啊?那我期待值是多少啊? 是不是登录成功啊?要一模一样,你必须这个值一模一样,有的时候他在这边随便写这么长,打个感叹号,那你能期待人家后面带感叹号,你怎么能确定呢?你要看人家这个 结果嘛,对不对?你是人要代言的。然后呢?然后这个地方再来写个什么呢? 它这个地方其实是填实际值,实际值是 r s r s 是代表我是不是实际。呃,那就不对,实际值还是要放在哪里呢?放在后面。嗯,他刚提示我,我以为这个是放在前面的。好,这样就对了,这是不是期待值啊?他这边有提示,这边是什么 实际值?实际值是不是由你自己是不是测方法得到的结果呀?对,好,那我们这个测试方法其实就已经怎么样?是不是已经写好了?现在我是不是可以进行测试了? 好,怎么测试呢?你可以在这个方法任何一个位置直接右键就在这个位,任何一个位置都可以啊,直接右键,然后你会发现这边是不是有个叫 run test logan name, 是不是直接是执行这个单元测试类啊?他不是 笨方法,但是人家是不是一样可以跑?你看点一下,点一下就开始进行单元测试了,好,然后执行完之后呢?你往下看。我之前说过,我说绿色是怎么样 是成功,他现在有没有出 bug, 没有,说明我这个业务功能有没有毛病,没有。好,我再举个例子,比如说有一天有个成员呐,他不小心是把我的数据动了,或者这个数据是从其他地方发过来了,那这个数据是不是很明显有问题啊?而我现在要求是一定要是什么 m 和一二三四五六,我的业务是一定要这样子,绕线能不能测出来?可不可以测出他的错误?能。 好,那咱们是不是也是右键刨一把,刨完之后呢?大家看,我们是能够把这个问题测出来的,他是不是已经发现是登录业务有问题?红颜色,而且他说到您的功能业务是不是可能出现 bug 啊? 你说这让我们感觉登录更具体。好,这样一旦别人动了我的这个方法正确性 动作这个方法导致正确性有问题,我这边是马上可以反应过来了,他说我期待的只是登录成功,而实意只是什么,因为我们以后的密码错误,我就知道我的登录业务可能有 bug, 我就去检查一下, 好,能听懂吧。那下面这个视频要查询所有的用户啊,所有用户的名字,我是不是也要写个测试方法?那这个测试方法呢?我们把它叫 public void, 比如说 test select names。 好,然后呢?我们在这边呢做什么事情呢?其实你直接去调一下就行了,调什么呢?调由得 service 点 service names。 好,那有的时候这里需不需要断言呢?你这里不需要去断言,因为你你这个方法是没有返回值啊,而且 代言,也就说你需要代言才代言,也不是什么时候都要去代言的,那就让我不用代言,那这样的好处是什么呢?这样做的好处就是说我就看这个方法是不是有没有出 bug 就行了,如果没有出 bug, 他这个调用是不是就成功了?对,如果出现 bug 呢? 这个钓鱼会失败,到时候测试方法会标是不是红红色给你啊?来,我们来测一下,这个方法直接右键直跑呢? test 的时候呢,有 lames 点一下好,点一下。之后呢,我们来看一看,红颜色的是失败的,他说你这个方法内部是出现一个处理异常啊,那不就知道,哦,我这个测试失败了。 好,这是单独测。那接下来我再给大家说一种测试方式,我可以把这个类里面所有测试方法是自动化的跑一遍,因为人家单位测试就是个一键测试吧,我可以在这个类上面的直接他是测试整个类,看到没有?就是跑整个类啊,跑整个测试类啊, 然后在这个地方任何一个空白的位置,右键也是跑整个类的好,跑整个类的话,你会发现他把两个方法是不是都测试一把啊?那这个方法黄颜色什么意思呢?黄颜色意思就是说你的方法可能没有出异常,但是你预期的结果是不是有问题啊?所以他警告你,警告你什么?你的数据是不是可能被别人动了? 这都是黄颜色,而这个地方红色就代表你的方法是不是真的出 bug 了?对,所以他这个测试报告很完整。那即使你这里有一千个测试方法,我也只需要什么一键,是不是就可以跑完了?是啊,你之前就不是这样的,之前你肯定要一个人去测的哟,而且中间出现问题,别的方法是不是就测不了了?他这个可以一起测, 这样在企业里面就是一种自动化测试机制。而且他更厉害的是什么呢?他可以把这个系统里面,就这个模块里面所有测试方法跑一把,你可以右键的。 那这里面其实有几千个测试类,几千个测试方法是不是都可以一键测试完的?你看我直接右键跑一把了,它可以自动去寻找了,是不是也找到这个类, 看懂吧,他这个就强大,人家一键测试完了。好,那回到我们的 ppt, 关于单元测试的一个快速入门呢?我们就说到这,那咱们来总结一下 杰瑞力单元测试实验的过程是什么样子的?第一步要干嘛呀?是不是要导入杰瑞力框架架包?对对,但是需不需要我们导啊?不需要,除非你集成是不是失败了,然后你才需要自己去导架包。自己导也可以啊,就自己把它拷贝到奶粉包里面去,加到依赖库。 第二点是定义的测试方法毕竟是无参数,还要怎么样?无法维持,而且要公开,因为你这个测试方法只是为了测试他不需要接数据,是 也不需要返回结果呀。是啊,第三点是什么呢?测试方法必须使用 attex 的注解标记,这样才能成为测试方法。 那么经历测试某个方法,测试前部方法怎么处理?成功的标志是什么?测试某个方法,你的光标应该落在 方法内部,测试全方法应该放在内上面,或者放在模块上面,是不是去执行啊?对,好,那就是这样,这样子就可以了,成功的标志是这样的, 红色失败,绿色怎么样?通过他身上还有些黄颜色,代表你的方法没有出异常,但是结果与你预期的是不一样,他会做一些警告。好,但是这个框架呢,我们就说到这。 好的,在上节课程中呢,我们已经讲解了单元测试的快速入门,那么接下来呢,我们来为同学们介绍一下单元测试的一些 常用注解。这常用注解呢,用的不多啊,我们了解一下就可以了。好,我们来看一下这些常用注解啊。 那么以经历四为例,他会用到这些注解,我们用的最多的是不是就是 attet 注解,这是测试方法是必须用到的,他有一个 at b for at after at before class at after class。 我们先看 at b for hp。 fo 呢,是用来修饰实力方法,该方法会在每一个测试方法执行之前执行一次。而这个 l f 呢,是也是修饰实力方法,它会在每一个测试方法执行之后执行一次。那这个呢,它是用来修饰静态方法,会在所有测试方法执行之前执行一次, 这个呢是修复进来方法,会在所有的测试方法执行之后执行一次。他们分别呢,用于做初始化资源和释放资源呢? 因为一开始做的事情是不是都是数字化资源的?嗯,最后做的事情一般是释放资源。好,这东西了解一下就可以。那具体是什么意思呢?咱们呢?还是到 idea 中呢?去演示一下,从这边打我们 idea 在列的位置呢?我再来为同学们来写个测试类。好,其实也可以不用再写,我们在这个里面呢,演示一下就可以了。他首先说了一个注解,叫挨着什么挨着 before, 人家的要求是他只能休日。什么?是不是只能休日?实力方法好,一定要注意啊。是休日实力方法的 好,那它是这样的,比如我写个实际方法就叫 public, 然后呢? void b for。 好,在这里面呢,我来打一段提示,这段提示呢是 before 执行一次。 邓老师,这个方法谁赢一次啊?当然这个方法名你可以随便写的,你写任何方法名都可以的。那我们再来一个注解,叫什么呢?是不是叫 at after a f t r。 好,这方法名呢,我也把它改成 after, 这里面的也改成阿普特。那刚刚人家说了,他们是怎么样执行的?他们是不是在所有测试方法执行之前执行一次?那么在每个测试方法执行之前执行一次,在每个测试方法执行之后是不是执行一次啊?那我们来试一下,假如说我把这个登录这个方法测一下。 好,测的时候大家注意看,执行之前执行一次,执行之后是不是执行一次啊?他这个异常信息,有的时候他不是怎么样,他不是,是按照顺序打的。对,这个不用管,但是你如果想看的更清楚,你可以把这个怎么样,是不? 我都改对就行了,改对然后再来跑,就能看的很清楚了。好,他是执行之前执行一次,执行之后执行一次。下面这个呢?你再跑一下,他也会出现执行之前执行一次,然后再执行。我们的是不是方法呀?在执行之后执行一次啊? 那如果整个类都跑一把呢?那他会出现怎么样?每次执行之前是不是都会执行一次?是不是这样子?好,那么到这呢,其实我们就已经介绍完了,这两个注解的一个什么呢?特点呢?那他其实还有两个注解,我们要注意一下。 那剩下两个注意是修是什么方法呢?好,近代方法呢?叫什么呢?叫 before class, 然后这个叫 after class, 那就把这个地方也改成 before class。 好,把这个改成 before class。 它是在类之前呢,那就在类所有方法知音之前嘛,然后这个呢?是 after class, 也就是在类的所有方法知音之后,是不是知音一次啊?那我现在呢,直接把这个类里面的所有测试方法跑一把。 好,就让大家来看这个结果。好,他这个地方是报错了。为什么报错了?他说你是无效的测试类的错误,啥意思呢?我们刚刚说过他只能修是什么 静态方法?因为你想他在累执行之前执行一次,那我想这个方法是不是肯定是有累来掉的?所以他应该是什么静态的?静态的方法是不是给累掉的?你再跑他就不会报错了。好,再执行一下。 好,同学们,看他打出来这个信息啊,你看在所有的测试方法执行之前,是不是他先执行这个 before 克拉斯啊?对啊,那 最后是不是一定是指引这个 up class 的,对吧?我们再跑一下来看这个结果,那就是这个样子,是吧?最后指引 up class, 所有所有方法指引之前指引 before class, 所以他们只会是不是各自指引一次就可以了。那这两个是跟着什么每个测试方法走的,所以他们都是 实力的一种形式,是吧?相当于跟着他每个人的测试方法对那个对象一起掉的啊?好,那大家注意一下是什么呢? 我们这些东西能做什么?我们一般在这里面做一些什么呢?做一些初始化操作,比如说我这些测试方法需要用到一些 io 流,可能每个测试每个测试方法都要用一个新的 io 流,我是不是可以在这边把这个 io 流先弄出来啊? 然后这边就可以怎么样?到时候想办法去访问,等用完之后呢?是不是再在 auto 里面关掉啊?那如果有一些静态 资源呢?假如有些近代资源,我是不是可以在这个里面进行初始化呀?近代资源初始化之后,然后后面是不是就可以用了?等所有的初始化用完之后,我再怎么样,在这边是不是在回收啊?好,所以这些东西呢,我们简单了解一下就可以了,知道它的特点就行了,作用呢,可看具体情况具体分析啊。 好,回到我们的 ppt, 我们就说完了这些注解,那大注啊,我们说的是经历四的注解,人家经历的五是不是也有注解啊?那他的注解是这个样子的,太子注解还是都叫太子的,那他叫逼疯,一起, 你翻一下就知道,这是不是就是实力方法在每个方法执行之前呢?这个是在每个方法执行什么之后?逼疯二是不是所有方法执行之前?阿普特在所有方法执行之后?这四个注解跟我们刚刚讲那四个,四个注解的作用是怎么样? 一模一样?指人家是不是改了名字啊?是,而且我认为他这个名字改的怎么样?改的挺好的,是不是更直观一点呢?是每一个之前,每一个之后,所有之前,所有之后,就对应我们这四个注解吗? 是吧?所以他这个方法取得还挺好的。好,关于这个常用注解呢,我们呢就说到这大,并不需要去 记这个东西,是吧?你知道了解一下,培养一下我们这种注解使用的思维就可以了,因为注解开发呢,在我们以后啊是很流行的。这是为什么?我要介绍这个东西,以后咱们做项目经常用用类似于注解的方式来实现一些功能啊。好,咱们就先说到这。

好,张俊啊,展示一下。那我先看你的那个代码,最前面最开头,最开头的项目往上拉,往上拉 啊。系统吃货联盟。好,往下拉,看下代码展示啊,写的挺多的。好,来看一下。控制台。控制台好,第一个订餐啊,我要订餐。 好,返回呢。按按零加注册。嗯,那如果说我要是按个七呢? 按个七,你按个七,没事,你按个七,我来看一下是不是是什么反应。按个数字七啊,七就系列使用。

大家好,今天这个视频我们来看下怎么在低版本 supreme boot 中使用 mark 来模拟静态方法。 假设你现在使用的 supreme boot 版本是二点三点七点 release, 对应的 motito 版本是三点三点三,这个版本是无法对静态方法进行模拟的 motito, 支持模拟静态方法的版本最低需要三点八点零,所以我们需要先排除掉自带的 motito 版本,然后添加高版本的 motito。 此外还需要添加 motito in line, 不然的话汇报如下错误信息, 这里有一个静态类,在它的方法又去调用另一个类的方法。 按正常的逻辑,如果我们没有建立另一个被调用类需要的资源调用汇报异常, 在 test 中需要先用 max static 对静态类进行模拟,具体视力如下, 运行 test 方法可以看到正确的返回了对静态方法的模拟结果。以上就是在低版本 spring boot 中 使用 mark 来模拟静态方法的操作步骤,希望对大家的工作学习有所帮助,感谢观看下个视频见!

介绍了一下这优乐的单元测试中测试的一个分类,分为黑盒测试,白盒测试, 那么我们也知道了这优力特这个单元测试,他是白河测试,能理解是吧?那么下来呢,我们就来用一用这个这优力特来完成一个简单的测试案例来编写, 那么这个地方呢,我们先来写一个普通的代码,我们之前看一下我们怎么测试的,那么在这个地方我们创建一个包,在这呢我们创建了一个模块,那么在这模块中呢,我们起了个名,叫做对零一,是一个基础加强写的中文,那么这个地方为了方便各位后期去 找这个代码,所以呢我们起成中文名了,当然建议你后期在自己写的时候不写中文啊,我们在这个地方写一个包,写一个包,创建一个包,你有一个拍 k, c, n, d, i, t, past 第二 unit, 好,这 unit, 那么在这里边呢,我们写一个类,写一个普通的类,比如说我们写个计算器的类,里边定一些方法,开 q a, t 啊,开 q 类特计算器的类,那么这个计算器类呢?我们写个注视啊,注视就是计算器类, 那么里边可能有加减乘除一些方法,对吧?我们在里边定义两个方法,一个加法,一个减法,第一个加法夸不累,可加法呢?印的艾的,我们就定两个参数,印的 a, 印的 b, 好,写完了之后呢,我们在这里边 reany 阿姨阿姨 turnerna 加 b 即可。 写完了之后这就是一个加法啊,加法,那么我们把这个代码呢,我们复制一份吧,再写个减法,减法呢,这个地方我们叫做扫把返回啥呢? a 减 b, 完事了吧?好,这是 减法。好,这个类非常简单,写完了里边两方法一加一减,那么现在我想对这个类啊,去测试一下,我看这个类写的对不对,对吧,在用这个计算器类之前先测试,那么测试呢,我们一般起名就是看 q letitist 啊,这个名字 写完了之后,我们写一个闷方法, psvm 以前是不是这样写的?然后呢,我们去干事,就是去创建创建这个对象,然后呢,调用方法,完事了吧,以前是这样做的吗? 创建对象呢,我们就开 q like c a k q atec 等于六一个 a, 六一个开 q a t。 好,六完了之后,那么下来我们就可以调方法了。 c 点什么爱的好,传个一,传个二,传完了之后,我们返回一个结果啊,延 s u l t redot, 然后呢,我们打印一下 sout, 打印一下这个 redout, 是吧,以前是不是都这样做的?然后呢,运行一下这个代码,看一下结果是否正确,对不对? 那么我们来瞧一瞧这个结果是否是正确的哈,那么来看一下三,一加二是不是三啊?就是三,说明对了,那我现在要测试减法,怎么办呢?那简单,把它注视了,对吧?注视了,哎,多出了多注视了一个括号, 好,把这个选中,给他注释了。注释了之后呢,我们来 c 点萨吧啊,减法一,比如说逗号一,好吧,一减一,一减一呢,结果是零啊, es 啊, esult 游游 u l t 好,减法也有了, sout, 把这个蕊字 out 打印一下来运行一下,看一下是不是零。 正在运行啊,好,您没问题吧?我这个地方是用的快捷键在运行,那么这两个弄完了之后呢,我们的测试也写完了,发现,哎,这个类呢,定义的还是没有问题的,那么之前我们是这样做的,但是这样做呢,有一些很多的缺点。第一个缺点, 这个代码是不是要注释了,对吧?一个闷方法,嗯,只能运行,只能去测一个方法,然后呢,我要测另外的方法,我还要把它注释了,以免产生一些影响, 是这样的吧,很不方便,写代码不方便,而且呢,我这个测试代码呢,还得放跟这个代码放到一块, 是吧?也不方便,反正能不方便去管统一管理我的测试代码,反正呢,有很多的缺点,而且呢,一个类里边只能写一个闷方法,是不是都很不方便?所以呢,现在我们学了单人测试,我们就不要这样去 写测试类了,我们学了单元测试之后,我们怎么做?我们来说一下他的一个使用的一个步骤,好,使用步骤,第一步, 第一步,第一步呢,你要去定义一个测试类啊,测试类,测试类啊,测试类,我们一般有时候也称为测试用力啊,就测试类, ok 吧。第一个测试类,反正用个类就可以了,而且呢,建议啊,建议,建议,这个地方说一下, 建议这样做,建议有两个建议,第一个,第一个建议类名,这个测试类的名,测试类名叫做你被测试的类名,后边加个 pass, 能懂这意思?比如说你现在有个累,叫做 ctrl like, 然后你咋写啊?叫做 call kiki killl like, 太死他就这样写,太死他好,建议这样写,这是第一个事。第二个事,包名好,这个测试类的包包包叫啥呢?包一般我们放到什么?什么 叉叉叉底叉叉叉底叉叉叉,一般叫做 past 底,最后结尾是 past 包好, past 包,比如说我们是 cndit past, 然后 dirtys 好,最后放到这个包里边,建议这样做哈,这是比较符合我们编码的一些规则规范。 好,定义完测试类之后呢?第二个你要去第一,第一测试方法,第一测试方法好,那么这个测试方法将来是可以去独立执行的,独立独立运行,将来这个方法我们通过一系列的操作之后,让他可以独立 运行。那么这个方法现在我们也有一些建议啊,也就是建议有两个建议,那么第一个方法无外乎就是起名和返回值,还有参参数列表这些问题吧。那么建议呢?第一个建议,这个方法名要注意 我们测试哪个方法就写,比如说我们写 past, 后边跟的是你测试的方法名,比如说有个方法叫艾特,我们咋写呢?就是 past i 这样写 来理解这意思好,我们有个减法,那就是 fast 是不是这样写?那么第二个问题,建议返回值, 返回值测试方法的返回值建议使用 y 的,没有返回值,因为这个方法你要独立运行,运行了之后你看结果就行了,要返回之干嘛?又没人调用他,对不对?你自己又不调用他,那么这是第二 第三个呢?参数列表好,列表建议空猜 好,建议空餐,因为这个方法独立运行的,你又不调用他,给他传餐,没有必要建议空餐, ok 吧。好了,这三个事说一下, 那么第三步,第三步就是最关键的一步了,那你随便定一个方法,你能让他独立运行吗?啊?当然不能,对不对?你方法怎么能独立运行吗?你要借助于闷方法,闷方法才是程序的入口吗? 那你要一场让一个测试方法能独立运行,你需要干一件事,给这个方法去加一个注解。加什么注解呢?这个注解叫 junit 啊, fast 里边有一个注解叫做 past 注解,艾特 tst, 加上这个方法就能够独立运行了,就这么三步,简单吧,简单是吧?那么来写一下, 首先呢,我们去第一一个包,在这里边再弄一个包,弄一个 plus 字包,叫做 tist 包,好, tst 包, 你看两个包是不是平级的,那么下边呢,我们写一个类的名字,这个名字是不是就就这个名加 fast 就可以了?好,你有一个 clus, 好,他加上 fast。 好,建议这样写啊, 那么这就是我们的一个单元测试的类,那么写完了之后呢,我们定一个方法,比如说我们在这加个注视,我们说是测试,测试爱的方法。 方法,那么咋第一呢,就写帕布雷克 red tist id 完事了吧, 完事了之后,接下来我们要让这个方法能够独立运行,咋办呢?我们在这加个艾特 past, 注意 past 好,加上,加上之后你就发现呀,报错了是吧?我 不加,你看我不加,我这个代码还没有问题,我一加上我就整个程序报错了。为啥报错了?是因为现在你的工程里边并没有去导入 zunit 的依赖,所以呢,你需要干一件事。 第四步,需要去导入这个 zunitunit 的一个依赖环境啊,怎么导入呢?这个地方非常简单,这是不是有个小灯泡啊,你点一下,注意看啊,说添加 zui 的四到你的克拉斯 pass 类路记下边点一下, ok 就完事了, 简单吧,是不是就这么简单?好,写完了之后呢,我们先来看一下,我们在 sout 看这个方法能不能执行,说我,我被执行了,好,你注意,现在我们来运行这个方法,看是不是有箭头啊,点一下软, 这个地方运行的时候呢,就可以这样去运行,走来看一下,稍等。 好,你看这个地方输出有没有问题,这没有任何的问题。 ok, 那么接下来我们就可以来完成这个测试了。怎么测试呢?这个地方我们就可以去干嘛呀?是不是创建对象啊?我们去创建创建这个计算器对象。好, 好,然后呢,第二步是不是调用他的方法呀?调用爱的方法啊,方法。那么怎么办呢?我们在这写一下 kit ulit, 对吧? c 等于六一个 kikulit, 然后呢, c 点爱的传个一,传个二,没问题, 对吧?返回一个 r e, s, u, l t redot, 然后呢? sut, 对吧?我们打印一下 redot, 好,弄完了之后呢,我们来运行一下,来瞧一瞧这个代码,结果是不是三 十三吧,没有问题,程序运行成功。那么这个地方说完了,说完了之后呢,我们还要说另外一个事,这个事呢,就是说,比如说这个太子的方法,你现在运行成功了,他是绿颜色,你看这个地方是不是都是绿颜色的,都是绿的吧,绿颜色,绿颜色代表 ok 成功了, 那么如果他变成红色了,说明你这个程序可能有异常,那比如说我们在这里边呢写一个异常,对吧?我们就递一个异常,手造一个异常, ent i 等于三除零够异常了吧?零被除了,对吧? 不能这样去写,所以呢这个地方一定会抛出一个数学异常,那么在这我们来再运行,你注意看啊,他会变成红颜色 来再运行走,你注意看,现在来看,你看是不是就红了,你看是不是都变成红色的,说什么摆子要有数学异常, 那么这个地方你要知道将来我们其实呢使用这一用力的时候,你要注意的是啥呢?要注意使用这一用力的时候,我们看的不是输出的结果,一般我们看的是红色还是绿色,如果是红色 表示测试失败,如果是绿色表示测试成功。将来一些后期的我们学的一些测试框架也会这样去判断的。如果你光说输出的话,你根本就输出,根本 本就不会看出来他是正确与否,那么输出这个地方我们只能是肉眼来看,并不能通过程序去判断,如果是红色还是绿色,我们是不可以通过程序去判断的。当然这个事呢,后期我们了解一些测试框架,我们会再给大家说的。 那么现在呢,我们说这个地方怎么来去做这个事情,那么看好我把这个,这个这个注视了, 我们先在笔记上记录一下,笔记上记录一下这应用车的使用步骤,知道了第四步,我们去判定一个结果。怎么去判定结果呢?判定结果,那么结果的判定是, 嗯,黑色,红色,红色代表啥呢?代表成功,然后呢绿色代表,哎,红色代表失败啊,失败,绿色代表成功, ok 吧?好,知道那个结果的判定。 之后呢,我们先把这个注释呢?把这个这个玩意给他注释掉,注释掉之后呢,我们来说,现在呢,我把它改成减号,相当于我在写爱的方法的时候写错了,能理解吧?写错了之后呢,我们在这个地方,在这个地方我再来执行他,注意我再执行他。红的还是绿的? 红红的,绿的吗?对吧?你看是不是绿的,绿的说明啥?成功了,但是结果是我想要的吗?我一加二成了,负一了, 不是我想要的,所以呢,输出经常我们看不出来,或者说并不能得到我们想要的结论或者结果, 那怎么办呢?一般情况下我们不会在单元测试里边去输出,我们会做一件操作,叫做断言的操作。断言什么意思呢?就是我断言这个 结果是三,那么会怎么办呢?他会把我断言的结果是三和真正的结果去比,如果两个是一样的, 那就是绿颜色,如果不一样呢?断言失败了,那肯定你程序里边有八个才会失败,是不是这意思?所以呢,我们可以怎么做断言,那么断言呢?叫做 start 尔斯尔特,那么俄斯尔特呢?有一个类叫做 ass e r t 俄斯尔特,那么里边有个静态方法,有一大堆俄斯尔特依扣,那么是俄斯特尔瑞依扣,人数组是否相等, 然后你看是不是有一大堆的方法,那么我们用这个耳塞一扣就行了,他有一大堆的虫仔形式啊。那么我们里边传两个硬的性的纸有没有啊?肯定是有的哈,那么浪是不是可以接收硬的性的纸啊?能理解,是吧?那么我们在这里边 传两个值,那么注意看这个参数,那么这个地方一个是你期望的值,一个是真实的值哈,我们来看一下这个方法,你看一个是 expark 的,一个是真实的值,你期望啥呢?我期望是三,真实的值啥呢?真实的值是蕊造的,能理解,那么现在我期望是三, 真实是不是三我不知道,那么我们来看哈,再来运行,注意走,你注意断言, 断言完事了之后呢?现在我知道我写错了,那么是不是就报错了,你看这个地方是不是这这红色的了,是吧?断言失败了,说说这个结果在哪呢?他有没有一个提示啊?说期望是三, 但是呢,你给了个值呢?是负一,是不是就断言失败了,这个程序整体是不是就废了?挠他一口就不不想等了, 对吧?所以呢,这样去做比较符合我们测试的一个目的,那么这个地方要注意断盐的操作, 所以呢,这个地方要说一下第三个事,我们要说一下,一般,一般我们会使用断盐 操作来来处理这个结果。好,那么断言怎么断言呢?你自己去看一下这个东西就可以了。好,呃, sir, 这么一个东西,那么这个地方是一个期望的结果,然后呢,这个呢,就是我们程序运算的结果, 是运算的结果,他会去拿着运算的结果和期望的结果去比对,调用这个耳塞的依扣方法比对两个是不是一样。好,这是一个操作,那么当然啊,我们这个单元测试呢,我们可以测试爱的方法,当然,你是不是还可以再 再来测试啊?测试啥呢?你可以再写一个吗?啊?帕布雷克 red 泰斯特萨布 是不还可以测试?萨布就是减法,对吧?那同理啊,加上一个 past, 那么你看现在这样写是不是很方便?那么比如说,我们再来创建对象,复制一份,然后呢,调用他的 c 点萨布, ok 吧?然后呢,一一逗号二,好,然后呢,返回一个啊, es 由 l t 没问题吧?然后第三步,我们断言一下, a s s e r t 好,那么一二一减,我期望是负一,真实的结果呢?哎,少掉方法啊。呃, sir 的 a s s e 二 t 一口好 一口没问题,是吧?然后期望是负一亿,返回的是 redot, 然后呢,我们来执行一下,期望 是负一返回呢?不知道是不是负一,是绿的就通过,是红的就失败,对吧?我们来看一下最终的结果是不是绿的呀?好,绿的就欧了吗?不需要输出的对吧?好嘞,那么对于单元测试基本的一个使用,我们就在这个地方讲解完毕了。

省年力姆自动化测试工具在拍摄中比较常用,它运行在浏览器中,可以模拟用户真实操作浏览器,当然在我们加法中也是支持的,我们来这里简单看一个案例, 嗯,我这里是主要是打开谷歌浏览器去访问百度,然后去搜索程序员至亲,然后点击搜索按钮,然后我们再滑到底部,这里再跳转到下一页。我们先来第八个看下相关的效果, 可以看到我鼠标是没动的,他这里会去自动搜索成全振兴,然后并且滑到底部,然后这里他会点击下一页, 然后这里我们再去操作一下,这里可以看到已经跳转到第二页了,然后我们在这里也可以去获取到我们的一个下一页的一个按钮信息,我们这里可以拿到数据,比如说我们这里下一页是这个标识啊,我们这里可以看下控制台,这里输出 出到下一页,在我们挑注完浏览器之后,我们也可以进行关闭浏览器以及退出,然后我们来说一下他的一个具体使用,首先我们需要在项目中去引用 cindimojawa 这么一个工具包,然后我们还需要去下载我们的一个驱动, 我们在这里去下载适合自己的浏览器驱动版本,我们可以在谷歌浏览器的右边这里有个符号,然后我们在这里去选择帮助,然后这里有一个关于谷歌, 然后这里就能去看到我们使用的一个谷歌的版本,然后我们可以复制下这个前缀,然后再到我们这里的一个驱动版本,然后我们 ctrl f 一下,可以看到这里相关的版本有三个,然后我们点击进入, 可以查看这里有相关的 linux mark 以及 windows 版本。拿到这个驱动包之后,然后我们就可以展 里面的一个驱动,然后拷贝到我们的项目中,可以放到我们的项目目录下,然后在我们的代码里面我们就可以去,在这里我们可以去指定浏览器的一个驱动位置,我这里是在项目目录下,然后我们就可以去编程实现相关的一个自动化逻辑了。