亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit內(nèi)部解密
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/4/11 13:36:09 ] 推薦標(biāo)簽:

  Junit 內(nèi)部解密之: Test + TestCase + TestSuite

  Interface: Test 整個測試的的基礎(chǔ)接口

  Method 1: abstract int countTestCases() 這個方法主要是用來計算要運(yùn)行的test case的數(shù)量的。

  Method 2:abstract void run(TestResult result) 這個方法主要是用來執(zhí)行一個測試用例并且在測試結(jié)果的實(shí)例中收集它的測試結(jié)果。

  Class:TestCase

  定義:abstract class TestCase extends Assert implements Test 繼承了Assert類并且實(shí)現(xiàn)了Test接口。而且是個抽象類。

  Class: TestSuite

  定義:class TestSuite implements Test; Test接口的實(shí)現(xiàn)類,和TestCase一樣. 但是TestSuite是一系列testcase的集合,將所有要運(yùn)行的testcase add到TestSuite。

  觀察一:TestCase 和 TestSuite類都實(shí)現(xiàn)了Test 接口。

  好處一:由于當(dāng)你給TestSuite增加一個對象時,實(shí)際上增加的是Test,而不只是個TestCase,這樣我們既可以在TestSuite里面增加另一個TestSuite,也可以加入一個TestCase。如果是TestCase,那么會運(yùn)行那個單獨(dú)的測試;如果是TestSuite,那么運(yùn)行一組測試。

  如何實(shí)現(xiàn):那么是如何實(shí)現(xiàn)上面說的那個好處呢?看下TestSuite的一個addtest方法明白了:

  Public void addTest(Test test) 新增一個test到testsuite,直接使用fTests.add(test)來新增。

  這里可以新增的入?yún)⑹荰est接口,而不是一個TestCase對象,所以只要實(shí)現(xiàn)了Test接口的實(shí)現(xiàn)類,包括TestCase和TestSuite,都可以不斷的增加下去。這樣引出了好處二和設(shè)計模式。

  好處二:當(dāng)我們?yōu)樽约旱膽?yīng)用程序創(chuàng)建特殊的suite或組合出TestAll類非常容易。簡單說明下TestAll類:僅僅包含了一個靜態(tài)的suite方法,會注冊需要定期執(zhí)行的所有的Test對象(包括TestCase對象和TestSuite對象)。

  Java設(shè)計模式:Composite模式

  定義:把對象組合(composite)成樹狀結(jié)構(gòu)來表示部分-整體層次關(guān)系,Composite模式可以讓客戶一致的對待單個對象和對象的組合。

  我們來看下Junit的Test接口和TestCase和TestSuite類是如何實(shí)現(xiàn)Composite模式的:

  先搞清楚Junit里面的部分-整體分別是什么,這里單個的TestCase可以看作是部分,把復(fù)合的TestCase(TestSuite)看作是整體,看下面的圖:

  我們可以看到這樣的模式會帶來另外一些好處:

  簡化了JUnit的代碼 JUnit可以統(tǒng)一處理組合結(jié)構(gòu)TestSuite和單個對象TestCase。使JUnit開發(fā)變得簡單容易,因?yàn)椴恍枰獏^(qū)分部分和整體的區(qū)別,不需要寫一些充斥著if else的選擇語句。

  好處三:TestCase是個抽象實(shí)現(xiàn)類,而且繼承了Assert類,這里為啥要繼承Assert類呢?因?yàn)樵谝粋testcase中是肯定需要用的Assert斷言的,如果不繼承Assert類,那么testcase方法中要寫成Assert.assert(),不是很簡潔,現(xiàn)在繼承了Assert類后,我們可以在繼承了TestCase類的測試類中直接assert(),使測試代碼看得非常簡潔和清楚。

  定義了TestCase對象和TestSuite的類層次結(jié)構(gòu) 基本對象TestCase可以被組合成更復(fù)雜的組合對象TestSuite,而這些組合對象又可以被組合,如我們上個例子,這樣不斷地遞歸下去。客戶代碼中,任何使用基本對象的地方都方便的使用組合對象,大大簡化系統(tǒng)維護(hù)和開發(fā)。

  仔細(xì)看看Test接口的方法,它存在一個是countTestCases方法,它來統(tǒng)計這次測試有多少個TestCase,另外一個方法run。還有一個參數(shù)TestResult,它來統(tǒng)計測試結(jié)果。這里為啥存在一個run方法呢? 我們想想Junit在run testcase的時候,需要把這些testcase的組成打包后成為請求發(fā)送到Junit Framework,這樣我們實(shí)現(xiàn)TestCase類的時候,可以自由的實(shí)現(xiàn)run方法去打包發(fā)送請求。這樣我們在寫測試用例時候,只需繼承TestCase,來完成run方法即可,把測試結(jié)果記錄到TestResult中,這樣的做法好引出另外的Java設(shè)計模式。

  Java設(shè)計模式:Command模式

  定義:將一個請求封裝成一個對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求進(jìn)行排隊或記錄請求日志...,Command告訴我們可以為一個操作生成一個對象并給出它的一個execute(執(zhí)行)方法。

  run()是我們的Command模式的Excecute方法:

  我們可以看到這樣的模式會帶來另外一些好處:

  Command模式將實(shí)現(xiàn)請求的一方(TestCase開發(fā))和調(diào)用一方(JUnit Fromwork)分離開。

  Command模式可以將多個TestCase進(jìn)行組合成一個復(fù)合命令,實(shí)際你將看到TestSuit是它的復(fù)合命令。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 97欧美精品激情在线观看最新 | 97青青草原国产免费观看 | 国产精品亚洲日日摸夜夜添 | 国产bbw| 免费人成年短视频在线观看网站 | 免费v片在线观看视频网站 免费不卡中文字幕在线 | 欧美精品免费专区在线观看 | 国内外成人在线视频 | 激情一区二区三区成人 | 黄色网址在线看 | 欧美日韩一卡二卡 | 精品视频99 | 午夜黄色| 波多野结衣在线播放视频 | 久久88香港三级 | 久爱www成人网免费视频 | 天天爽天天摸 | 玖玖在线免费视频 | 秋霞宅宅236理论片 秋霞在线高清观看伦理片 秋霞影视伦理手机在线观看 | 亚洲精品第一页中文字幕 | 污网站免费在线观看 | 又爽又黄又无遮挡的视频在线观看 | 国产亚洲精品国产第一 | 亚洲欧美中文字幕在线网站 | 久久精品国产久精国产80cm | 五月天婷婷激情网 | 91视频网页 | 97国产成人精品视频 | 欧美在线视频一区二区 | 免费看羞羞视频的网站 | 国产丝袜大长腿精品丝袜美女 | 卡一卡二卡三精品入口 | 亚洲国产情侣一区二区三区 | 69日本人xxxx16-18| 午夜影院免费观看 | 亚洲欧美一区在线 | 国产一级片在线播放 | a级毛片免费高清视频 | 2021国产精品自在拍在线播放 | 欧美精品在线观看 | 国产无内制服肉丝精品视频 |