<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          BDD與單元測(cè)試相關(guān)問(wèn)題介紹

          共 1695字,需瀏覽 4分鐘

           ·

          2021-12-23 15:30

          java的單元測(cè)試原理

          原理描述

          java進(jìn)程的啟動(dòng)依賴(lài)于唯一的main函數(shù),java中的junit采用插件隱藏main函數(shù)的方式,我們右鍵運(yùn)行某測(cè)試用例。其本質(zhì)上傳入的是測(cè)試用例的路徑。而插件啟動(dòng)的main函數(shù)通過(guò)args去接受傳入的用例路徑,并解析出測(cè)試用例的前后執(zhí)行方法(包括一些注解),并對(duì)具體的方法進(jìn)行排序,最后采用多線程submit任務(wù),從而進(jìn)行測(cè)試用例的執(zhí)行。在idea中選中包路徑運(yùn)行整個(gè)包下的測(cè)試用例,相當(dāng)于啟動(dòng)了若干個(gè)runner任務(wù)。

          @RunWith是什么?

          不同的測(cè)試工具有不同的單測(cè)規(guī)則,原理基本如上段所述。我們比較常用的單測(cè)框架有junit,而且junit的不同版本其語(yǔ)法規(guī)則也不一樣。比如junit3,junit4,junit5.不能混用的原因就是他們有不同的語(yǔ)法解析過(guò)程。用的不對(duì)等價(jià)于白用。

          所以@RunWith表示junit版本比較多的情況下指定運(yùn)行的junit版本。我們開(kāi)發(fā)中比較常見(jiàn)的有@RunWith(SpringRunner.class)、@RunWith(SpringJUnit4ClassRunner.class)、@RunWith(SpringJUnit5ClassRunner.class)等。在不指定@RunWith的時(shí)候會(huì)創(chuàng)建一個(gè)默認(rèn)簡(jiǎn)單的單測(cè)構(gòu)造器,然后直接去執(zhí)行測(cè)試用例。@RunWith的作用是為了解決版本問(wèn)題。但是有時(shí)候沒(méi)有版本問(wèn)題就不需要添加這個(gè)注解。

          單元測(cè)試和Spring的整合

          因?yàn)楹?jiǎn)單的測(cè)試用例沒(méi)辦法針對(duì)Spring的函數(shù)進(jìn)行調(diào)用,尤其是依賴(lài)反轉(zhuǎn)、aop這些能力。所以需要將spring的能力接納過(guò)來(lái)。因?yàn)閟pring核心的是啟動(dòng)了一個(gè)start()方法,所以我們可以繞過(guò)spring項(xiàng)目的main函數(shù)而直接去走start方法,然后做一些變動(dòng)就可以將spring提供的能力整合到單元測(cè)試框架中。

          什么是行為驅(qū)動(dòng)測(cè)試

          我的理解是單元測(cè)試只能針對(duì)具體的函數(shù)或者接口,但是我們的業(yè)務(wù)往往是相互連接,而且錯(cuò)綜復(fù)雜的。逐個(gè)對(duì)函數(shù)進(jìn)行單測(cè)只能保證單個(gè)函數(shù)沒(méi)有問(wèn)題,但當(dāng)方法組合成業(yè)務(wù)的時(shí)候,很難保證系統(tǒng)整體上沒(méi)有問(wèn)題。

          ??????? 比如:

          ??????? 對(duì)于接口 A、B、C.......的隨機(jī)組合,按不同順序去請(qǐng)求接口,那么系統(tǒng)是否會(huì)產(chǎn)生一些出乎意料的結(jié)果?

          所以,行為驅(qū)動(dòng)測(cè)試是以業(yè)務(wù)人員的視角進(jìn)行測(cè)試。

          如何實(shí)現(xiàn)BDD

          市面上比較常用的BDD框架是cucumber 。

          先做一個(gè)demo嘗嘗鮮!

          1、idea安裝cucumber插件。(單元測(cè)試的main主函數(shù)從此觸發(fā))

          引入maven依賴(lài)

          核心解析包<dependency>    <groupId>io.cucumbergroupId>    <artifactId>cucumber-javaartifactId>    <version>7.1.0version>dependency><dependency>    <groupId>io.cucumbergroupId>    <artifactId>cucumber-springartifactId>    <version>6.9.0version>dependency>單測(cè)包<dependency>    <groupId>io.cucumbergroupId>    <artifactId>cucumber-junitartifactId>    <version>6.9.0version>    <scope>testscope>dependency>

          2、編寫(xiě)feature腳本

          cumuber默認(rèn)的feature腳本路徑是test\resources目錄,如果沒(méi)有,我們創(chuàng)建resources目錄,我們創(chuàng)建一個(gè)簡(jiǎn)單的add.feature

          ???? 這時(shí)候,我們的測(cè)試用例后邊都是白色的背景色。我們需要?jiǎng)?chuàng)建相關(guān)的java文件。我們alt+enter。進(jìn)行創(chuàng)建。

          隨便寫(xiě)點(diǎn),括號(hào)表示傳入的參數(shù)。


          3、編寫(xiě)測(cè)試用例

          4、執(zhí)行單測(cè)

          右鍵我們的feature文件

          5、與spring的整合

          在和spring整合這塊,cumuber提供了cumuber-spring的jar包。只需要我們?cè)趯?xiě)代碼的時(shí)候添加上注解@CucumberContextConfiguration即可。

          BDD存在的問(wèn)題

          comuber不能mock,因?yàn)樗捎玫膉unit不是同一junit。


          就到這里吧,冬天來(lái)了,注意不要感冒流鼻涕!



          瀏覽 70
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中韩一区二区 | 亚洲天堂2014 | 狗爷城中村嫖妓视频 | 日本成人性爱视频 | 18禁日韩 |