CppUnit入門學習使用指南

發表于:2012-09-26來源:百度質量部作者:不詳點擊數: 標簽:cppunit
CppUnit入門學習使用指南.在 CppUnit 中,一個或一組測試用例的測試對象被稱為 Fixture。Fixture 就是被測試的目標,可能是一個對象或者一組相關的對象,甚至一個函數。

  在 CppUnit 中,一個或一組測試用例測試對象被稱為 Fixture。Fixture 就是被測試的目標,可能是一個對象或者一組相關的對象,甚至一個函數。

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

  通常寫一個 TestCase 的步驟包括:

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

  2) 按照要測試的某個功能或者某個流程對 fixture 進行操作;

  3) 驗證結果是否正確;

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

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

  撰寫TestCase必須注意以下幾點:

  可以自動執行,不用人手操作

  自動返回測試結果

  絕對的獨立,不能與其他TestCase有任何聯系。就算測試同一個函數的不同功能也需要分開。每個TestCase可以說是一個孤島

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

  在測試函數中對執行結果的驗證成功或者失敗直接反應這個測試用例的成功和失敗。CppUnit 提供了多種驗證成功失敗的方式:

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

  下面是一個TestRunner的例子:

  常用使用方式

  按照上面的方式,如果要添加新的測試用例,需要把每個測試用例添加到 TestSuite 中,而且添加新的 TestFixture 需要把所有頭文件添加到 main.cpp 中,比較麻煩。為此 CppUnit 提供了 CppUnit::TestSuiteBuilder,CppUnit::TestFactoryRegistry 和一堆宏,用來方便地把 TestFixture 和測試用例注冊到 TestSuite 中。下面就是通常的使用方式(注意紅色字體):

  這樣添加新的測試用例(TestFixture)只需要在類定義的開始聲明一下即可。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97