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

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

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

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

    使用配置文件定義 Mock 對象,創建高效、靈活的測試用例

    發布: 2009-3-06 09:20 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 71次 | 進入軟件測試論壇討論

    領測軟件測試網

      replay(mockRequest);
    assertTrue(HttpServletRequestUtil.validate(mockRequest));
    verify(mockRequest);
      }
    }

            首先,我們通過 EasyMock 提供的靜態方法 createMock 創建 Mock 對象 mockRequest。當 Mock 對象創建好以后,我們就可以對 Mock 對象的預期行為和輸出進行設定。對預期行為和輸出的設定分成兩個部分:(1)對指定方法進行調用;(2)對預期輸出進行設定。在上例中,mockRequest.getHeader("Host"); 對 Mock 對象的 getHeader 方法進行了調用,之后用 expectLastCall().andReturn("www.ibm.com:80").times(1) 對Mock對象的預期輸出進行了設定。andReturn 方法設定了當 getHeader 方法被調用時,將返回字符串 "www.ibm.com:80",times 方法設定了該方法預期被調用的次數是1。

            在結束對 Mock 對象預期行為和方法的設定之后,我們可以調用 replay 靜態方法將 mockRequest 對象切換成回放狀態。在回放狀態下,Mock 對象的方法調用將返回預先設定的輸出。在上例中,HttpServletRequestUtil 類的 validate 方法對 mockRequest 的 getHeader 方法進行了調用,并對得到的值進行驗證。

            最后,我們可以用 verify 方法來驗證預期方法的調用是否真的完成了。如果將上例中 expectLastCall().andReturn("www.ibm.com:80").times(1) 設定的調用次數修改為2,而實際測試中只調用了一次該方法,您將會看到以下的錯誤:


    清單2:verify 驗證錯誤
    java.lang.AssertionError:
      Expectation failure on verify:
        getHeader("Host"): expected: 2, actual: 1
    at org.easymock.internal.MocksControl.verify
    at org.easymock.EasyMock.verify
    at org.easymock.demo.testcase.HttpServletRequestTestCase.testHttpSevletRequest

            通過示例,我們了解了 EasyMock 的使用方法。EasyMock 能為單元測試提供了一定的便利,然而,它也有一些明顯的不足之處:

    • 測試數據和預期結果以編碼的形式寫在測試用例中,測試數據的任何微小變化都會導致代碼的重新編譯和部署;
    • 被測試模塊所包含的方法和參數硬編碼在測試代碼中,方法或參數的變化將導致所有相關測試代碼的修改(例如 HttpServletRequest 中的參數常常會在開發過程中發生改變,這會影響大量測試代碼);
    • 單元測試的測試過程包含在測試代碼中,當測試用例發生變化,測試代碼有可能需要全部重寫,造成代碼的頻繁修改和引入錯誤的機會。

    3.利用 XML 文件配置 Mock 對象

            為了改進目前 EasyMock 使用方法中存在的不足,我們需要引入配置文件來對 Mock 對象進行定義。我們的目標是通過配置文件的使用來實現測試代碼和數據的分離。當開發人員因為測試用例的變化而需要改變 Mock 對象的測試行為時,就可以直接對配置文件作出改動,而無需修改測試代碼。

            構建 Mock 對象需要以下兩方面的信息:(1)Mock 對象對應的接口或類信息;(2)Mock 對象的預期行為與輸出。如果將以上兩類信息配置在文件中,通過對配置文件的解析來構造 Mock 對象,就可以實現測試代碼和數據分離的目標,從而改進現有 Mock 對象構造方法中的不足。

            本文在提出使用配置文件定義 Mock 對象這一機制的同時,也提供了一個基于 EasyMock 的實現。我們將這一實現稱為 XMLEasyMock。XMLEasyMock 的完整實現和相關的測試代碼都可以在 xmleasymock.zip 中找到。如果您使用 Eclipse 作為 IDE,那么您可以將它導入您的 Workspace(如下圖):


    圖1:導入 xmleasymock.zip 后的 workspace
    導入 xmleasymock.zip 后的 workspace

            在 XMLEasyMock 中,我們選用 XML 文件作為 Mock 對象的配置文件,XML 文件的自定義和結構特性使得它成為描述 Mock 對象最佳的選擇。根據以上對 Mock 對象信息配置的分析,我們可以給出 Mock 對象配置文件的模板:

    延伸閱讀

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

    22/2<12

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