• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    (三)利用 Eclipse 進行單元測試

    發布: 2009-4-02 10:05 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 27次 | 進入軟件測試論壇討論

    領測軟件測試網  首先像以前一樣嘗試使用 jMock 來模擬 Collaborator 對象 —— 只是這一次,Collaborator 沒有默認的無參數構造函數。注,保留布爾 false 結果的測試期望。
    同時假定 Collaborator 對象要求使用字符串和原始的 int 作為傳遞給構造函數的參數。清單 6 顯示了對 Collaborator 對象所做的更改。

    清單 6. 經過編輯的場景 3 的 Collaborator 類
                   
    public class Collaborator{
       private String collaboratorString;
       private int collaboratorInt;
     
       public Collaborator(String string, int number){
        collaboratorString = string;
        collaboratorInt = number;
       }
       public String executeJob(){
        return "success";
      }
    }

       Collaborator 類構造函數仍然十分簡單。用傳入參數設定類字段。這里不必使用任何其他邏輯,并且其 executeJob() 函數保持不變。
    重新運行測試,并且示例的所有其他組件保持不變。結果是災難性的測試失敗,如下所示:

    圖 5. 場景 3 測試失敗

                        
       以上測試是作為簡單的 JUnit 測試運行的,沒有代碼覆蓋。您可以用大多數代碼覆蓋工具(例如,Cobertura 或 EclEmma)來運行本文中列出的任何一個測試。但是,用 Eclipse 內的代碼覆蓋工具運行 RMock 測試時會帶來一些問題(參見 表 1)。以下代碼顯示了實際堆棧跟蹤的代碼片段。

    清單 7. 場景 3 中測試失敗的堆棧跟蹤
                   
                    ...Superclass has no null constructors but no arguments were given
     at.net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:718)
     at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:499)
     at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
     at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
     at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
     at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
     at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:660)
     .....
     .....

       失敗原因是 jMock 無法通過沒有無參數構造函數的類定義創建可行的模擬對象。實例化 Collaborator 對象的惟一方法是提供兩個簡單參數。您現在必須找到一種方法把參數提供給模擬對象實例化過程以達到同樣的效果,這就是使用 RMock 的原因。
    用 RMock 測試框架更正失敗的測試
       要更正測試,必須執行一些修改。這些更改可能顯得十分重要,但是實際上,它們是一種相對簡單的解決方法,利用兩種框架的強大功能來實現目的。
    必需的第一項更改是使測試類成為 RMock TestCase,而不是成為 jMock CGLIB TestCase。目的是在測試本身內啟用屬于 RMock 的那些模擬對象的較容易的配置并且 —— 更重要的是 —— 在最初設置期間啟用這些配置。經驗證明,如果測試類擴展的整個 TestCase 對象屬于 RMock,則通過兩個框架構造和使用模擬對象將更容易。此外,乍看之下,快速確定模擬對象的流程將更容易一些(在這里,流程 用于描述使用模擬對象作為參數甚或作為其他模擬對象的返回類型的情況)。
      必需的第二項更改是(至少)構造一個保存傳遞給 Collaborator 類的構造函數的參數實際值的對象數組。為了清晰起見,還可以包括構造函數接受的類類型的類型數組并可以傳遞該數組,以及剛剛描述為參數的對象數組以實例化模擬 Collaborator 對象。
    第三項更改涉及用正確語法構造對 RMock 模擬對象的一個或多個期望。而第四項也是最后一項必需的更改是使 RMock 模擬對象脫離記錄狀態轉入就緒狀態。
    實現 RMock 更改
    清單 9 顯示了對 ServiceClassTest 類的最終修改。它還顯示了 RMock 及其相關功能的引入。

    清單 9. 修正場景 3 的 ServiceClassTest 類
                   

    110593_200904021006561NAqj

    110593_200904021006561NAqj

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: eclipse Eclipse 單元


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>