您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > cppUnit
CppUnit--面向C++的測(cè)試框架
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/1/9 14:58:12 ] 推薦標(biāo)簽:CppUnit 單元測(cè)試 框架

   CppUnit是自動(dòng)化單元測(cè)試框架的c++實(shí)現(xiàn)版本。它是XUnit(包括如JUnit,PythonUnit,DelphiUnit等)家族中的一員,是一個(gè)專門面向C++的測(cè)試框架。CppUnit 是個(gè)基于 LGPL 的開源項(xiàng)目,初版本移植自 JUnit,是一個(gè)非常的開源測(cè)試框架。CppUnit 和 JUnit 一樣主要思想來源于極限編程(XProgramming)。主要功能是對(duì)單元測(cè)試進(jìn)行管理,并可進(jìn)行自動(dòng)化測(cè)試。

一. CppUnit 的原理

在 CppUnit 中,一個(gè)或一組測(cè)試用例的測(cè)試對(duì)象被稱為 Fixture(設(shè)施,下文為方便理解盡量使用英文名稱)。Fixture 是被測(cè)試的目標(biāo),可能是一個(gè)對(duì)象或者一組相關(guān)的對(duì)象,甚至一個(gè)函數(shù)。

有了被測(cè)試的 fixture,可以對(duì)這個(gè) fixture 的某個(gè)功能、某個(gè)可能出錯(cuò)的流程編寫測(cè)試代碼,這樣對(duì)某個(gè)方面完整的測(cè)試被稱為TestCase(測(cè)試用例)。通常寫一個(gè) TestCase 的步驟包括:

    對(duì) fixture 進(jìn)行初始化,及其他初始化操作,比如:生成一組被測(cè)試的對(duì)象,初始化值;
    按照要測(cè)試的某個(gè)功能或者某個(gè)流程對(duì) fixture 進(jìn)行操作;
    驗(yàn)證結(jié)果是否正確;
    對(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è)試用例之間沒有交叉影響。

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

下面是個(gè)簡(jiǎn)單的例子:

class MathTest : public CppUnit::TestFixture {
 protected:
   int m_value1, m_value2;
 public:
   MathTest() {}
 // 初始化函數(shù)
   void setUp () {
     m_value1 = 2;
     m_value2 = 3;
   }
   // 測(cè)試加法的測(cè)試函數(shù)
   void testAdd () {
     // 步驟(2),對(duì) fixture 進(jìn)行操作
     int result = m_value1 + m_value2;
      // 步驟(3),驗(yàn)證結(jié)果是否爭(zhēng)取
     CPPUNIT_ASSERT( result == 5 );
   }
   // 沒有什么清理工作沒有定義 tearDown.
 }

先寫到這里,明天補(bǔ)充。

http://www.vckbase.com/document/viewdoc/?id=1258

http://www-128.ibm.com/developerworks/cn/linux/l-cppunit/index.html

http://www.evocomp.de/tutorials/tutorium_cppunit/howto_tutorial_cppunit_en.html

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