您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > cppUnit
CppUnit入門(mén)學(xué)習(xí)使用指南
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/12 13:33:38 ] 推薦標(biāo)簽:

  在 CppUnit 中,一個(gè)或一組測(cè)試用例的測(cè)試對(duì)象被稱為 Fixture。Fixture 是被測(cè)試的目標(biāo),可能是一個(gè)對(duì)象或者一組相關(guān)的對(duì)象,甚至一個(gè)函數(shù)。

  有了被測(cè)試的fixture,可以對(duì)這個(gè) fixture 的某個(gè)功能、某個(gè)可能出錯(cuò)的流程編寫(xiě)測(cè)試代碼,這樣對(duì)某個(gè)方面完整的測(cè)試被稱為T(mén)estCase(測(cè)試用例)。

  通常寫(xiě)一個(gè) TestCase 的步驟包括:

  1) 對(duì) fixture 進(jìn)行初始化,及其他初始化操作,比如:生成一組被測(cè)試的對(duì)象,初始化值;

  2) 按照要測(cè)試的某個(gè)功能或者某個(gè)流程對(duì) fixture 進(jìn)行操作;

  3) 驗(yàn)證結(jié)果是否正確;

  4) 對(duì) fixture 的及其他的資源釋放等清理工作。

  對(duì) fixture 的多個(gè)測(cè)試用例,通常(1)、(4)部分代碼都是相似的,CppUnit在很多地方引入了setUp和tearDown虛函數(shù)?梢栽 setUp 函數(shù)里完成(1)初始化代碼,而在 tearDown 函數(shù)中完成(4)代碼。具體測(cè)試用例函數(shù)中只需要完成(2)、(3)部分代碼即可,運(yùn)行時(shí) CppUnit 會(huì)自動(dòng)為每個(gè)測(cè)試用例函數(shù)運(yùn)行 setUp,之后運(yùn)行 tearDown,這樣測(cè)試用例之間沒(méi)有交叉影響。

  撰寫(xiě)TestCase必須注意以下幾點(diǎn):

  可以自動(dòng)執(zhí)行,不用人手操作

  自動(dòng)返回測(cè)試結(jié)果

  的獨(dú)立,不能與其他TestCase有任何聯(lián)系。算測(cè)試同一個(gè)函數(shù)的不同功能也需要分開(kāi)。每個(gè)TestCase可以說(shuō)是一個(gè)孤島

  對(duì) fixture 的所有測(cè)試用例可以被封裝在一個(gè) CppUnit::TestFixture 的子類(命名慣例是[ClassName]Test)中。然后定義這個(gè)fixture 的 setUp 和 tearDown 函數(shù),為每個(gè)測(cè)試用例定義一個(gè)測(cè)試函數(shù)(命名慣例是 testXXX)。下面是個(gè)簡(jiǎn)單的例子:

  在測(cè)試函數(shù)中對(duì)執(zhí)行結(jié)果的驗(yàn)證成功或者失敗直接反應(yīng)這個(gè)測(cè)試用例的成功和失敗。CppUnit 提供了多種驗(yàn)證成功失敗的方式:

  要把對(duì) fixture 的一個(gè)測(cè)試函數(shù)轉(zhuǎn)變成一個(gè)測(cè)試用例,需要生成一個(gè) CppUnit::TestCaller 對(duì)象。而終運(yùn)行整個(gè)應(yīng)用程序的測(cè)試代碼的時(shí)候,可能需要同時(shí)運(yùn)行對(duì)一個(gè) fixture 的多個(gè)測(cè)試函數(shù),甚至多個(gè) fixture 的測(cè)試用例。CppUnit 中把這種同時(shí)運(yùn)行的測(cè)試案例的集合稱為 TestSuite。而 TestRunner 則運(yùn)行測(cè)試用例或者 TestSuite,具體管理所有測(cè)試用例的生命周期。目前提供了 3 類TestRunner,包括:

  下面是一個(gè)TestRunner的例子:

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