您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 >
EasyMock怎樣做單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/25 15:40:02 ] 推薦標(biāo)簽:

本文是為ZDNet翻譯的系列文章之一,原文已經(jīng)發(fā)表在ZDNet網(wǎng)站

單元測(cè)試的普及已經(jīng)增長(zhǎng),部分原因是極限編程(eXtreme Programming)的增長(zhǎng),然而編寫強(qiáng)大的單元測(cè)試是令人厭煩的事情。對(duì)象仿制通過偽造需要測(cè)試的目標(biāo)的周圍的對(duì)象來幫助減少你的工作,然后使用它檢查和需要測(cè)試的目標(biāo)相關(guān)的調(diào)用。
EasyMock是 創(chuàng)建那些偽造對(duì)象的快速的方法,同時(shí)它會(huì)保持單元測(cè)試的能力。EasyMock 的通常用法是:
1.    為一個(gè)接口創(chuàng)建一個(gè)偽造對(duì)象
2.    訓(xùn)練那個(gè)接口告訴它期望的調(diào)用以及需要得到的反應(yīng)
3.    測(cè)試目標(biāo)并驗(yàn)證偽造的對(duì)象
這里有測(cè)試一個(gè)方法的范例,Mapper.map(Processor, Integer[]),map方法對(duì)數(shù)組中的每個(gè)整數(shù)調(diào)用Processor.process 方法:

    public void testArrayProcessing() throws java/lang/Exception.java.html" target="_blank">Exception {
        Integer[] numbers = new Integer[2] {
            new Integer(6),
            new Integer(7)
        };
        // 創(chuàng)建偽造對(duì)象
        MockControl control = EasyMock.controlFor (Processor.class);
        Processor mockProcessor = (Processor)control.getMock();
        // 訓(xùn)練對(duì)象
        mockProcessor.process (numbers[0]);
        control.setReturnValue (new Integer(1));
        mockProcessor.process (numbers[1]);
        control.setReturnValue (new Integer(1));
        // 開始
        control.activate ();
        // 運(yùn)行測(cè)試
        Mapper.map(mockProcess, numbers);
        // 驗(yàn)證測(cè)試
        control.verify();
    } 


調(diào)用control 的verify 方法很重要,否則訓(xùn)練的一半不能被測(cè)試。例如如果我們已經(jīng)指定那個(gè)方法必須返回整數(shù)’1’,那么調(diào)用verify方法確保返回的確實(shí)是那個(gè)值。
訓(xùn)練過程中的方法調(diào)用的順序沒有影響,但是我們可以指定一個(gè)方法只能被調(diào)用指定的次數(shù):
//假設(shè)Processor接口有一個(gè)setName方法,并且
// 我們的類 Mapper,對(duì)每個(gè)項(xiàng)目都調(diào)用那個(gè)方法一次
mockProcessor.setName("Test");
control.setVoidCallable(3);
當(dāng)我們調(diào)用verify方法,它會(huì)檢查setName 被調(diào)用了多少次,如果那個(gè)方法被調(diào)用得太頻繁會(huì)報(bào)告一個(gè)錯(cuò)誤。
EasyMock的主要局限性是只能工作于接口上,但是使用接口是一個(gè)好的設(shè)計(jì)習(xí)慣,這沒有什么可抱怨的。
EasyMock可以節(jié)省很多費(fèi)力的工作并使得可以更快的編寫單元測(cè)試?梢詮木W(wǎng)上下載EasyMock,還有一個(gè)關(guān)于對(duì)象仿制的論文和其他的對(duì)象仿制API的鏈接。

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