您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中怎么使用CppUnit進(jìn)行單元測(cè)試”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中怎么使用CppUnit進(jìn)行單元測(cè)試”吧!
如果使用VC6,那么直接用VC6打開VC工程文件,選擇Batch Build(***自己對(duì)工程參數(shù)重新設(shè)置一下),然后就可以在源代碼包子目錄Lib中得到我們需要的庫(kù)文件。如果使用C/C++,那么用VC8打開VC6工程文件,并按提示直接轉(zhuǎn)換成.net版本。
同樣,選擇批生成,生成我們需要的庫(kù)文件。在VC8中編譯源代碼時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤“#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids”,將version("7.0")改為version("8.0")即可。
在開發(fā)應(yīng)用程序過程中,我們可能會(huì)使用到很多第三方程序庫(kù),如這里的CppUnit。為了方便,我們可以建立一個(gè)第三方程序庫(kù)的專用文件夾,并為具體的程序庫(kù)(如這里的CppUnit)建立子文件夾。然后在VC的Option中分別設(shè)置庫(kù)的頭文件路徑和庫(kù)文件連接路徑。
如果有Dll文件,則在系統(tǒng)變量PATH中加進(jìn)DLL文件所在目錄,這樣,程序運(yùn)行時(shí)就能搜索到該C/C++(注意,只有VC重啟后,PATH設(shè)置才會(huì)對(duì)從VC里直接運(yùn)行的程序生效)。
同樣,這里我們也把CppUnit的頭文件和庫(kù)文件路徑加到VC的默認(rèn)搜索路徑中。另外,需要指出,一般情況下,Dll文件是需要與生成的程序一同發(fā)布的,此時(shí)就必須將Dll文件拷貝到Project目錄中。此時(shí),可以采取手動(dòng)方式,也可以在Project的Post-Build Step中添加命令執(zhí)行拷貝動(dòng)作。
在VC中使用CppUnit進(jìn)行單元測(cè)試時(shí),可以選擇CppUnit的控制臺(tái)測(cè)試作界面和圖形測(cè)試界面??刂婆_(tái)界面簡(jiǎn)潔,而圖形界面較直觀,并且借助CppUnit提供的插件可以快速定位到斷言失敗的地方。一般情況下。
我們使用控制臺(tái)測(cè)試界面來測(cè)試Console程序,使用圖形測(cè)試界面來測(cè)試GUI程序,這樣測(cè)試Project不會(huì)影響被測(cè)試的Project。由于圖形測(cè)試界面的易用性,我們可能也希望用它來測(cè)試Console程序,此時(shí)稍微麻煩一點(diǎn)。下面分別介紹這幾種用法(以VC6為例,VC8類似)。
在下面的敘述中,把被測(cè)試Project叫做目標(biāo)Project,把被測(cè)試類叫做目標(biāo)類。使用CppUnit的Console測(cè)試界面測(cè)試Console程序
1. 創(chuàng)建一個(gè)工作區(qū)用于開發(fā)和測(cè)試,然后在該工作區(qū)中分別創(chuàng)建兩個(gè)Project,一個(gè)用于開發(fā),另一個(gè)用于測(cè)試。
2. 在測(cè)試Project中,設(shè)置如下:
(1)設(shè)置連接庫(kù):cppunit.lib(Release版)和cppunitd.lib(Debug版),或者使用動(dòng)態(tài)鏈接庫(kù)版本cppunit_dll.lib、cppunit_dll.dll和cppunitd_dll.lib、cppunitd_dll.dll;
(2)在C/C++的Code Generation中設(shè)置Use run-time library為Multithreaded Dll(Release版)和Debug Multithreaded Dll(Debug版)。
3. 為測(cè)試Project添加測(cè)試類,假如被測(cè)試的目標(biāo)類為Demo,那么可以定義一個(gè)DemoTest的測(cè)試類:
class DemoTest: public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(DemoTest); // 參數(shù)為本測(cè)試類名 CPPUNIT_TEST(testFunc); // 參數(shù)為測(cè)試函數(shù)名,與下面聲明的測(cè)試函數(shù)對(duì)應(yīng) CPPUNIT_TEST_SUITE_END(); public: void setUp() { // 在這里進(jìn)行測(cè)試的初始化工作 } void tearDown() { // 在這里進(jìn)行測(cè)試完畢后的清理工作 } void testFunc(); // 測(cè)試函數(shù),用來測(cè)試目標(biāo)類的某一個(gè)細(xì)節(jié) }; #endif // DEMO_TEST_H 文件DemoTest.cpp: #include "DemoTest.h" #include "../Demo/DemoTest.h" // 這里為要測(cè)試的目標(biāo)類的頭文件路徑,因?yàn)闇y(cè)試時(shí)要用到Demo類 #include <cppunit/extensions/HelperMacros.h> CPPUNIT_TEST_SUITE_REGISTRATION(DemoTest); void DemoTest::testFunc() { // 這里對(duì)Demo類進(jìn)行測(cè)試,可以使用CPPUNIT_ASSERT、CPPUNIT_ASSERT_EQUAL等來斷言 }
感謝各位的閱讀,以上就是“C++中怎么使用CppUnit進(jìn)行單元測(cè)試”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C++中怎么使用CppUnit進(jìn)行單元測(cè)試這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。