測試驅動(dòng)開(kāi)發(fā)(TDD)是以測試作為開(kāi)發(fā)過(guò)程的中心,它堅持,在編寫(xiě)實(shí)際代碼之前,先寫(xiě)好基于產(chǎn)品代碼的測試代碼。開(kāi)發(fā)過(guò)程的目標就是首先使測試能夠通過(guò),然后再優(yōu)化設計結構。測試驅動(dòng)開(kāi)發(fā)式是極限編程的重要組成部分。XUnit,一個(gè)基于測試驅動(dòng)開(kāi)發(fā)的測試框架,它為我們在開(kāi)發(fā)過(guò)程中使用測試驅動(dòng)開(kāi)發(fā)提供了一個(gè)方便的工具,使我們得以快速的進(jìn)行單元測試。XUnit的成員有很多,如JUnit,PythonUnit等。今天給大家介紹的CppUnit即是XUnit家族中的一員,它是一個(gè)專(zhuān)門(mén)面向C++的測試框架。
本文不對CppUnit源碼做詳細的介紹,而只是對CppUnit的應用作一些介紹。在本文中,您將看到:
1、CppUnit源代碼的各個(gè)組成部分。
2、怎樣設置你的開(kāi)發(fā)環(huán)境以能夠使用CppUnit。
3、怎樣為你的產(chǎn)品代碼添加測試代碼(實(shí)際上應該反過(guò)來(lái),為測試代碼添加產(chǎn)品代碼。在TDD中,先有測試代碼后有產(chǎn)品代碼),并通過(guò)CppUnit來(lái)進(jìn)行測試。
本文敘述背景為:CppUnit1.9.0, Visual C++ 6.0, Windows2000。文中敘述有誤之處,敬請批評指正。
一、CppUnit源碼組成
CppUnit測試框架的源代碼可以到 http://sourceforge.net/projects/cppunit/ 上下載。下載解壓后,主要的文件夾有:
• doc: CppUnit的說(shuō)明文檔。另外,代碼的根目錄,還有三個(gè)說(shuō)明文檔,分別是INSTALL,INSTALL-unix,INSTALL-WIN32.txt。
• examples: CpppUnit提供的例子,也是對CppUnit自身的測試,通過(guò)它可以學(xué)習如何使用CppUnit測試框架進(jìn)行開(kāi)發(fā)。
• include: CppUnit頭文件。
• src: CppUnit源代碼目錄。
二、初識CppUnit測試環(huán)境
解壓源代碼包后,您一定急著(zhù)想看看CppUnit到底是個(gè)什么樣?Ok,下面我們就來(lái)揭開(kāi)CppUnit的神秘面紗:
1、進(jìn)入example文件夾,用VC打開(kāi)examples.dsw。我們先來(lái)看看CppUnit自帶的測試例子。這些例子都是針對CppUnit自身的單元測試集,一方面這是CppUnit作者開(kāi)發(fā)CppUnit框架過(guò)程中寫(xiě)的測試用例,另一方面,我們可以通過(guò)這些例子來(lái)學(xué)習如何在我們自己的工程中添加測試用例。
2、將CppUnitTestApp工程設為Active Project(Win32 Debug),編譯后運行,則可以看到CppUnit的基于GUI方式進(jìn)行單元測試TestRunner的界面。點(diǎn)擊“Run”,
這是一個(gè)針對CppUnit的單元測試結果,它表明剛才我們做了11個(gè)測試,全部通過(guò)。
點(diǎn)擊“Browse”,我們還可以選擇想要進(jìn)行的單元測試
CppUnit將所有的單元測試按照樹(shù)的結構來(lái)表示。在CppUnit中,最小的測試單元,稱(chēng)為T(mén)estMethod測試方法,而多個(gè)相關(guān)的測試方法又可以組成一個(gè)TestCase測試用例。多個(gè)測試用例又組成TestSuite測試包。測試包互相嵌套在一起,就形成了上面我們看到的樹(shù)結構。我們可以選擇其中任意的樹(shù)節點(diǎn)來(lái)進(jìn)行單元測試。
3、將CppUnitTestMain工程設置為Active Project(Win32 Debug),編譯并運行,我們來(lái)看看另一個(gè)單元測試的環(huán)境
這是一個(gè)基于文本方式的單元測試環(huán)境。CppUnit提供了幾種測試環(huán)境,一種基于文本,一種基于GUI,
4、將HostApp工程設置為Active Project(Win32 Debug),編譯運行。
這亦是一個(gè)對CppUnit自身進(jìn)行的測試,只不過(guò)它向我們演示的是各種失敗的測試。在基于GUI的測試環(huán)境中,若測試不成功,進(jìn)度條顯示紅色,反之則為綠色。從測試結果我們可以看到失敗的單元測試名稱(chēng),引起測試不能通過(guò)的原因,以及測試失敗的語(yǔ)句所在的文件及所在行數。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/