您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
Junit--Junit In Action 筆記
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/7/8 11:23:18 ] 推薦標(biāo)簽:

3.1.2 實(shí)現(xiàn)基類(lèi)

public class DefaultController implements Controller {
      private Map<String,RequestHandler> requestHandlers = new HashMap<String,RequestHandler>();

      protected RequestHandler getHandler(Request request){
            if(!requestHandlers.containsKey(request.getName())){
                  String message="Can't find handler for request name["+
                  request.getName()+"]";
                  throw new RuntimeException(message);
            }
            return (RequestHandler)this.requestHandlers.get(request.getName());         
      }
      public void addHandler(Request request, RequestHandler handler) {
            if (this.requestHandlers.containsKey(request.getName())){
                  String message="A handler has already been registered for request name["+
                        request.getName()+"]";
                  throw new RuntimeException(message);
            }else{
                  requestHandlers.put(request.getName(), handler);
            }
                
      }

      public Response processRequest(Request request) {
            Response response;
            try{
                  response = getHandler(request).process(request);
            }
            catch(Exception ex){
                  response = new ErrorResponse(request,ex);
                
                
            }
            return response;
      }
    

}

3.2讓我們來(lái)測(cè)試吧
3.2.1 測(cè)試DefaultController

3.2.2 增加處理器
測(cè)試來(lái)自何方?
為了創(chuàng)建一個(gè)單元測(cè)試,你需要兩種類(lèi)型的對(duì)象:你需要測(cè)試的領(lǐng)域?qū)ο蠛屯粶y(cè)試的對(duì)象交互的測(cè)試對(duì)象

測(cè)試類(lèi)存在于何方
你把測(cè)試類(lèi)存放在何方?Java提供了幾種解決方案.
  把它們作為package中的共有類(lèi)
  把它們作為test Case類(lèi)的內(nèi)部類(lèi)

Junit佳實(shí)踐:選擇有意義的測(cè)試方法名

遵循的步驟有章可尋:
1. 在開(kāi)始測(cè)試時(shí)把環(huán)境設(shè)置為已知狀態(tài).測(cè)試前的狀態(tài)常稱(chēng)為T(mén)est Fixture;
2. 調(diào)用待測(cè)試的方法;
3. 確認(rèn)測(cè)試結(jié)果,這里通常是調(diào)用一個(gè)或多個(gè)Assert方法實(shí)現(xiàn)的;
3.2.3處理請(qǐng)求
Junit佳實(shí)踐:在assert中解釋失敗原因
分離出初始化邏輯

3.2.4 改進(jìn)testProcessRequest


3.3 測(cè)試異常處理
Junit佳實(shí)踐:測(cè)試任何可能失敗的事物
3.3.1模擬異常條件
      異常Test Case才是單元測(cè)試真正閃光的地方

3.4 建立測(cè)試項(xiàng)目
Junit佳實(shí)踐:同一個(gè)包,分離的目錄


第四章:探索軟件測(cè)試
                崩潰指的是你的計(jì)算機(jī)程序的死亡,當(dāng)你的程序死亡的時(shí)候,這是一個(gè)”特性”,
通常,緊跟崩潰之后的是一個(gè)像”ID 02”這樣的消息,”ID”是對(duì)特性的一個(gè)簡(jiǎn)稱(chēng),而跟隨的消息
數(shù)目又指出了這個(gè)產(chǎn)品所再需要的測(cè)試的月數(shù).                                ---------------Guy Kawasaki

在本書(shū)的前面幾章,給出了非常實(shí)際的設(shè)計(jì)和部署單元測(cè)試的指導(dǎo).本章則后退一步.帶你從
更遠(yuǎn)的地方領(lǐng)略軟件測(cè)試的各種各樣的類(lèi)型,已經(jīng)它們?cè)趹?yīng)用生命周期中所扮演的角色.
本章告訴你如何為了可測(cè)試性而設(shè)計(jì),以及怎樣實(shí)現(xiàn)測(cè)試先行的開(kāi)發(fā).
                為什么你需要知道所有這些呢,因?yàn)檫M(jìn)行單元測(cè)試不是件心血來(lái)潮的事情.為了成為一個(gè)
好的開(kāi)發(fā)者,你必須理解為什么一定要做這件事,以及你為什么要寫(xiě)單元測(cè)試而不是編寫(xiě)功能測(cè)試,
集成測(cè)試和其他種類(lèi)的測(cè)試.一旦你理解了你為什么要寫(xiě)單元測(cè)試,你知道你應(yīng)該進(jìn)行多遠(yuǎn),何時(shí)你才
具備足夠的測(cè)試,測(cè)試不是一個(gè)終的目標(biāo).
                后,我們將會(huì)向你展示測(cè)試驅(qū)動(dòng)開(kāi)發(fā)將會(huì)怎樣潛移默化地改善你的應(yīng)用程序的性能和設(shè)計(jì),
這是通過(guò)把單元測(cè)試放在開(kāi)發(fā)過(guò)程的中心地位而做到的.
4.1 單元測(cè)試的必要性
                功能測(cè)試也能夠做到這點(diǎn),但是,單元測(cè)試是更強(qiáng)大和多方面的,它能夠做的不僅僅是簡(jiǎn)單地驗(yàn)證應(yīng)用程序正常工作.
他還能:
                帶來(lái)比功能測(cè)試更廣范圍的測(cè)試覆蓋.
                讓團(tuán)隊(duì)協(xié)作成為可能.
                能夠防止衰退,降低調(diào)試的需要.
                能為我們帶來(lái)重構(gòu)的勇氣.
                能改進(jìn)實(shí)現(xiàn)設(shè)計(jì).
                當(dāng)作開(kāi)發(fā)文檔使用.
                單元測(cè)試非常有趣.
4.1.1 帶來(lái)更大的測(cè)試范圍
                功能測(cè)試應(yīng)該是應(yīng)用程序所應(yīng)有的第一種測(cè)試類(lèi)型.如果你必須在寫(xiě)單元測(cè)試和功能測(cè)試之間做出選擇,
那么你應(yīng)該選擇后者.在我們的經(jīng)驗(yàn)中,功能測(cè)試能發(fā)現(xiàn)70%的應(yīng)用程序代碼錯(cuò)誤.如果你希望進(jìn)行更深入一點(diǎn),想
提供更大測(cè)試覆蓋范圍,那么你需要寫(xiě)單元測(cè)試了.
                單元測(cè)試能夠很容易地模擬錯(cuò)誤條件,這點(diǎn)在功能測(cè)試中很難辦到.盡管如此,若你使得要不要進(jìn)行軟件測(cè)試
完全取決于測(cè)試覆蓋范圍,這也是一個(gè)錯(cuò)誤,單元測(cè)試比單純地測(cè)試能提供更多東西,這將會(huì)在一下地小節(jié)中說(shuō)到.
4.1.2 帶來(lái)團(tuán)隊(duì)協(xié)作的可能
                設(shè)想一下,你是一個(gè)團(tuán)隊(duì)中的一員,在整個(gè)應(yīng)用程序的某一個(gè)部分上工作.單元測(cè)試使你能夠遞交高質(zhì)量代碼
而不需要等到其他部分都完成以后.另一方面,功能測(cè)試也更粗糙,而且需要整個(gè)應(yīng)用程序完成之后才能進(jìn)行測(cè)試.
4.1.3 防止衰退,減少調(diào)試
                一組好的單元測(cè)試能夠給你帶來(lái)自信,讓你確信自己的代碼能很好的工作,它也給你去修改你現(xiàn)存的代碼的勇氣,
要么是重構(gòu)的目的,要么是為了增加或是修改特性.作為一個(gè)開(kāi)發(fā)者,沒(méi)有什么比這更好的感覺(jué)了;知道有人正站在你背后,
而且在你損壞一些東西的時(shí)候?qū)?huì)給你提醒.
                一個(gè)必然的推論是:一組好的測(cè)試能減少用調(diào)試程序來(lái)發(fā)現(xiàn)錯(cuò)誤的必要.

Junit佳實(shí)踐:重構(gòu)

上一頁(yè)1234567下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd