您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > cppUnit
VS2005下使用CPPUNIT進(jìn)行單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/1/7 13:09:19 ] 推薦標(biāo)簽:CPPUNIT 單元測(cè)試

  一、單元測(cè)試與CPPUNIT簡(jiǎn)介

  幾乎每個(gè)開(kāi)發(fā)人員都寫(xiě)過(guò)測(cè)試代碼,但是往往這些代碼不系統(tǒng),也沒(méi)有良好的管理,同時(shí)在測(cè)試代碼編寫(xiě)過(guò)程中也有很多重復(fù)的勞動(dòng),比較繁瑣。在一個(gè)軟件開(kāi)發(fā)過(guò)程中,往往會(huì)進(jìn)行很多修改,迭代開(kāi)發(fā)的模型隨處可見(jiàn),如何驗(yàn)證程序的功能、性能和結(jié)構(gòu)是否符合要求是一項(xiàng)重要的工作。

  單元測(cè)試是屬于白盒測(cè)試和結(jié)構(gòu)性測(cè)試,一般由開(kāi)發(fā)人員開(kāi)展,當(dāng)然如果有好的測(cè)試工具支持,測(cè)試人員甚至終用戶(hù)都可以參與。單元測(cè)試框架是編寫(xiě)和運(yùn)行單元測(cè)試的軟件工具,用來(lái)構(gòu)建測(cè)試、運(yùn)行測(cè)試、報(bào)告測(cè)試結(jié)果。對(duì)于C/C++開(kāi)發(fā),比較的收費(fèi)單元測(cè)試工具是C++ Test,免費(fèi)開(kāi)源的則是CPPUNIT。

  CPPUNIT是基于 LGPL 的開(kāi)源項(xiàng)目,初版本移植自 JUNIT ,是一個(gè)非常的開(kāi)源測(cè)試框架。CPPUNIT和 JUNIT 一樣主要思想來(lái)源于極限編程。主要功能是對(duì)單元測(cè)試進(jìn)行管理,并可進(jìn)行自動(dòng)化測(cè)試。CPPUNIT設(shè)計(jì)遵循很多設(shè)計(jì)模式,代碼結(jié)構(gòu)也相對(duì)好理解。

  二、CPPUNIT安裝、使用和框架

  1. 安裝

  CPPUNIT的主頁(yè)是http://sourceforge.net/projects/cppunit/,從這里可以獲取它的源代碼cppunit-1.12.1.tar。安裝過(guò)程如下:

  1).解壓 cppunit-1.12.0.tar.gz到C:cppunit-1.12.1;

  2).打開(kāi)src/CppUnitLibraries.dsw,如果是VC 7及以上版本,會(huì)有一個(gè)對(duì)話(huà)框詢(xún)問(wèn)是否將工程轉(zhuǎn)換成更高版本,選擇“Yes to all”進(jìn)行轉(zhuǎn)換;

  3).打開(kāi)“Build”菜單,選擇“Batch Build...”,彈出“Batch Build...”對(duì)話(huà)框后點(diǎn)擊“Select All”,然后Build。

  a.鏈接過(guò)程中會(huì)報(bào)錯(cuò):

  error C3505: cannot load type library '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'

  出錯(cuò)的文件是:srcmsvc6 estrunnerMsDevCallerListCtrl.cpp。這是由于使用VC 8.0編譯的緣故,需要修改一下它的源碼,打開(kāi)該文件,找到出錯(cuò)行(#67),將其替換為:

  #if _MSC_VER >= 1400    // VC++ 8 or more
  //The following #import imports EnvDTE based on its LIBID.
  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
  //The following #import imports EnvDTE80 based on its LIBID.
  #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids
  #else // vc7
  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids
  #endif

  b.另外還有一個(gè)錯(cuò)誤:error C1189: #error :  This add-in is for VC++ 6.0 only。發(fā)生這個(gè)錯(cuò)誤的是工程“DSPlugIn”,這只是個(gè)插件,沒(méi)有也不影響CPPUnit的使用,因此可以無(wú)視這條錯(cuò)誤。再次編譯,可以從lib文件夾中找到所有的靜態(tài)庫(kù)文件及動(dòng)態(tài)庫(kù)文件。

  4).將include和lib文件夾加入到VC++的環(huán)境中。打開(kāi):Tools|Options|Projects and Solutions|VC++ Directories,將這兩個(gè)文件夾的路徑分別加入到Include files和Library files中。好再將lib文件夾加入到系統(tǒng)環(huán)境變量PATH中,這樣不用再將其中的動(dòng)態(tài)鏈接庫(kù)拷到工程目錄下而直接運(yùn)行單元測(cè)試了。至此,CPPUnit的編譯安裝完成了。

  5).使用CPPUnitProjectWizard向?qū)?chuàng)建支持使用CPPUnit的測(cè)試類(lèi)的Visual Studio 2005項(xiàng)目,用這個(gè)向?qū)傻拇a,只是生成一個(gè)動(dòng)態(tài)庫(kù),有DllPlugInTesterd_dll.exe來(lái)調(diào)取這個(gè)動(dòng)態(tài)庫(kù)測(cè)試,個(gè)人感覺(jué)用處不大。

  安裝向?qū)?/p>

  a. 下載 CPPUnitProjectWizard

  http://cppunit.sourceforge.net/cppunit-wiki/CppUnitVisualStudio2005Wizard?action=AttachFile&do=get&target=CPPUnitProjectWizard.7z

  b. 復(fù)制文件

  CPPUnitProjectWizard.vsdir  - 為向?qū)?/p>

  CPPUnitProjectWizard.vsz    - 讓VS8知道從哪里找到向?qū)?/p>

  到您的Visual Studio 8安裝目錄下的 VCProjects 文件夾中,C:Program FilesMicrosoft Visual Studio 8VCvcprojects。

  c. 把整個(gè)CPPUnitProjectWizard解決方案文件夾復(fù)制到您的Visual Studio 8安裝目錄下的VCWizards文件夾中。

  比如,我放在c:Program FilesMicrosoft Visual Studio 8VCVCWizardsCPPUnitProjectWizardCPPUnitProjectWizard

  或者,也可以放在你想放置的其它地方,然后編輯CPPUnitProjectWizard.vsz,定義參數(shù) ABSOLUTE_PATH

  Param="ABSOLUTE_PATH = c:Program FilesMicrosoft Visual Studio 8VCVCWizardsCPPUnitProjectWizardCPPUnitProjectWizard"

  d. 該項(xiàng)目需要定義環(huán)境變量 CPPUNITDIR

  比如,我的環(huán)境變量 CPPUNITDIR= D:cppunit-1.12.1

  后,修改 環(huán)境變量 %PATH%,在PATH路徑中,增加 %CPPUNITDIR%/lib,以便程序加載時(shí)能找到 cppunit_dll.dll

  e. 在開(kāi)發(fā)環(huán)境中,設(shè)置好Include/Lib路徑

  %CPPUNITDIR%Include

  %CPPUNITDIR%LIB

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