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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > cppUnit
便利的開發工具CppUnit快速使用指南
作者:網絡轉載 發布時間:[ 2013/7/16 10:31:18 ] 推薦標簽:

本文從開發人員的角度,介紹 CppUnit 框架,希望能夠使開發人員用少的代價盡快掌握這種技術。下面從基本原理,CppUnit 原理,手動使用步驟,通常使用步驟,其他實際問題等方面進行討論。以下討論基于 CppUnit1.8.0。

背景

CppUnit 是個基于 LGPL 的開源項目,初版本移植自 JUnit,是一個非常的開源測試框架。CppUnit 和 JUnit 一樣主要思想來源于極限編程(XProgramming)。主要功能是對單元測試進行管理,并可進行自動化測試。這樣描述可能沒有讓您體會到測試框架的強大威力,那您在開發過程中遇到下列問題嗎?如果答案是肯定的,應該學習使用這種技術:

    測試代碼沒有很好地維護而廢棄,再次需要測試時還需要重寫;
    投入太多的精力,找 bug,而新的代碼仍然會出現類似 bug;
    寫完代碼,心里沒底,是否有大量 bug 等待自己;
    新修改的代碼不知道是否影響其他部分代碼;
    由于牽扯太多,導致不敢進行修改代碼;
    ...

這些問題下文都會涉及。這個功能強大的測試框架在國內的 C++ 語言開發人員中使用的不是很多。本文從開發人員的角度,介紹這個框架,希望能夠使開發人員用少的代價盡快掌握這種技術。下面從基本原理,CppUnit 原理,手動使用步驟,通常使用步驟,其他實際問題等方面進行討論。以下討論基于 CppUnit1.8.0。


1. 基本原理

對于上面的問題僅僅說明 CppUnit 的使用是沒有效果的,下面先從測試的目的,測試原則等方面簡要說明,然后介紹 CppUnit 的具體使用。

首先要明確我們寫測試代碼的目的,是驗證代碼的正確性或者調試 bug。這樣寫測試代碼時有了針對性,對那些容易出錯的,易變的編寫測試代碼;而不用對每個細節,每個功能編寫測試代碼,當然除非有過量精力或者可靠性要求。

編碼和測試的關系是密不可分的,推薦的開發過程并不要等編寫完所有或者很多的代碼后再進行測試,而是在完成一部分代碼,比如一個函數,之后立刻編寫測試代碼進行驗證。然后再寫一些代碼,再寫測試。每次測試對所有以前的測試都進行一遍。這樣做的優點是,寫完代碼,也基本測試完一遍,心里對代碼有信心。而且在寫新代碼時不斷地測試老代碼,對其他部分代碼的影響能夠迅速發現、定位。不斷編碼測試的過程也是對測試代碼維護的過程,以便測試代碼一直是有效的。有了各個部分測試代碼的保證,有了自動測試的機制,更改以前的代碼沒有什么顧慮了。在極限編程(一種軟件開發思想)中,甚至強調先寫測試代碼,然后編寫符合測試代碼的代碼,進而完成整個軟件。

根據上面說的目的、思想,下面總結一下平時開發過程中單元測試的原則:

    先寫測試代碼,然后編寫符合測試的代碼。至少做到完成部分代碼后,完成對應的測試代碼;
    測試代碼不需要覆蓋所有的細節,但應該對所有主要的功能和可能出錯的地方有相應的測試用例;
    發現 bug,首先編寫對應的測試用例,然后進行調試;
    不斷總結出現 bug 的原因,對其他代碼編寫相應測試用例;
    每次編寫完成代碼,運行所有以前的測試用例,驗證對以前代碼影響,把這種影響盡早消除;
    不斷維護測試代碼,保證代碼變動后通過所有測試;

有上面的理論做指導,測試行為可以有規可循。那么 CppUnit 如何實現這種測試框架,幫助我們管理測試代碼,完成自動測試的?下面看看 CppUnit 的原理。

2. CppUnit 的原理

在 CppUnit 中,一個或一組測試用例的測試對象被稱為 Fixture(設施,下文為方便理解盡量使用英文名稱)。Fixture 是被測試的目標,可能是一個對象或者一組相關的對象,甚至一個函數。

有了被測試的 fixture,可以對這個 fixture 的某個功能、某個可能出錯的流程編寫測試代碼,這樣對某個方面完整的測試被稱為TestCase(測試用例)。通常寫一個 TestCase 的步驟包括:

    對 fixture 進行初始化,及其他初始化操作,比如:生成一組被測試的對象,初始化值;
    按照要測試的某個功能或者某個流程對 fixture 進行操作;
    驗證結果是否正確;
    對 fixture 的及其他的資源釋放等清理工作。

對 fixture 的多個測試用例,通常(1)(4)部分代碼都是相似的,CppUnit 在很多地方引入了 setUp 和 tearDown 虛函數。可以在 setUp 函數里完成(1)初始化代碼,而在 tearDown 函數中完成(4)代碼。具體測試用例函數中只需要完成(2)(3)部分代碼即可,運行時 CppUnit 會自動為每個測試用例函數運行 setUp,之后運行 tearDown,這樣測試用例之間沒有交叉影響。

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 亚洲网在线 | 久久综合九色综合97_ 久久久 | 日本三级一区 | 亚洲欧洲尹人香蕉综合 | 精品久久久久久中文字幕欧美 | 日韩视频亚洲 | 国产精品久久久久久久久鸭 | 亚洲v天堂v手机在线观看 | 亚洲欧美一区二区三区在线观看 | 中文字幕在线观看日韩 | 国产又爽又黄又不遮挡视频99 | 午夜美女影院 | 手机看片1024国产 | 在线免费看黄的网站 | 黄a 大片a v 永久免费 | 黄色美女网站视频 | 免费在线成人网 | 97夜夜澡人人爽人人喊一欧美 | 亚洲国产日韩欧美在线a乱码 | 性插插视频 | 免费人成在线观看69式小视频 | www.色黄| 怡红院免费全部视频在线视频 | 国产干美女 | 欧美日韩你懂的 | 一级免费a | 欧美色图亚洲 | 美尻在线 | 九九视频在线看精品 | 99视频精品全部在线播放 | 国产的一级毛片完整 | 国产精品无卡无在线播放 | 久久久久国产一级毛片高清板 | 欧美性xxxxxx爱| 久青草国产在视频在线观看 | 久久综合九色综合欧美就去吻 | 欧美在线观看视频网站 | 国产香蕉98碰碰久久人人 | 成年女人毛片免费视频 | 亚洲日本久久一区二区va | 免费高清资源黄网站在线观看 |