您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > cppUnit
如何使用CppUnit進(jìn)行單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/23 11:39:41 ] 推薦標(biāo)簽:

  首先在project中打開(kāi)RTTI開(kāi)關(guān),具體位置在菜單Project/Settings/C++/C++ Language。如下圖所示設(shè)置:

  由于CppUnit所用的動(dòng)態(tài)運(yùn)行期庫(kù)均為多線程動(dòng)態(tài)庫(kù),因此你的單元測(cè)試程序也得使用相應(yīng)設(shè)置,否則會(huì)發(fā)生沖突。于是我們?cè)赑roject/Settings/C++/Code Generation中進(jìn)行如下設(shè)置:
  在Use run-time library一欄中,針對(duì)debug和release分別設(shè)置為‘Debug Multithreaded DLL’和‘Multithreaded DLL’。如下圖所示:

  后別忘了在project中l(wèi)ink正確的lib。包括本例采用的cppunit.lib和cppunitd.lib靜態(tài)庫(kù)以及用于GUI方式的TestRunner.dll對(duì)應(yīng)的lib。具體位置在Project/Settings/Link/General

  在‘Object/library modules’中,針對(duì)debug和release分別加入cppunitd.lib testrunnerd.lib和cppunit.lib TestRunner.lib。如下圖所示:

  后,由于TestRunner.dll為我們提供了基于GUI的測(cè)試環(huán)境。為了讓我們的測(cè)試程序能正確的調(diào)用它,TestRunner.dll必 須位于你的測(cè)試程序的路徑下。所以把/lib目錄下的testrunnerd.dll和TestRunner.dll文件分別拷貝到UnitTest priject的程序debug和release版本輸出目錄中。如下圖所示:

  (這是release版本)只要放在一起可以了。
  配置工作終于完成,下面開(kāi)始寫測(cè)試框架。

  在CppUnit中, 是以TestCase為小的測(cè)試單位, 若干TestCase組成一個(gè)TestSuite。所以我們要先建立一個(gè)TestCase。

  在UnitTest project中新建一個(gè)類, 命名為CPlusTestCase, 讓其從CppUnit::TestCase派生。為其新增一個(gè)方法,假設(shè)為 void testAdd(); 我們將在這個(gè)函數(shù)中寫入我們的一些測(cè)試代碼(還記得我們要測(cè)試的構(gòu)想中的CPlus::Add(…)嗎)。代碼如下:切記要包含頭文件

#include <cppunit/TestCase.h>
class CPlusTestCase : public CppUnit::TestCase
{
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
    void testAdd();
};

  接下來(lái), 我們要對(duì)我們的CPlusTestCase進(jìn)行聲明。聲明用到了三個(gè)宏.

 CPPUNIT_TEST_SUITE();
 CPPUNIT_TEST();
 CPPUNIT_TEST_SUITE_END();

  第一個(gè)宏聲明一個(gè)測(cè)試包(suite),第二個(gè)宏聲明(添加)一個(gè)測(cè)試用例. 現(xiàn)在我們的CPlusTestCase類看上去象這樣:切記要包含頭文件,否則無(wú)法識(shí)別這些宏。

#include <cppunit/TestCase.h>
#include <CppUnit/extensions/HelperMacros.h>

class CPlusTestCase : public CppUnit::TestCase
{
    CPPUNIT_TEST_SUITE(CPlusTestCase);
    CPPUNIT_TEST(testAdd);
    CPPUNIT_TEST_SUITE_END();
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
    void testAdd();
};


  通過(guò)這幾個(gè)宏,我們把CPlusTestCase和testAdd注冊(cè)到了測(cè)試列表當(dāng)中。

  接下來(lái),我們要注冊(cè)我們的測(cè)試suite. 使用CPPUNIT_TEST_SUITE_NAMED_REGISTRATION()來(lái)注冊(cè)一個(gè)測(cè)試suite. 這個(gè)宏的第二個(gè)參數(shù)是我們注冊(cè)的suite的名字. 在這里我們可以用字符串來(lái)代替, 但我們用一個(gè)靜態(tài)函數(shù)來(lái)返回這個(gè)suite的名字.

// PlusTestCase.h
class CPlusTestCase : public CppUnit::TestCase
{
    CPPUNIT_TEST_SUITE(CPlusTestCase);
    CPPUNIT_TEST(testAdd);
    CPPUNIT_TEST_SUITE_END();
public:
    CPlusTestCase ();
    virtual ~ CPlusTestCase ();
   void testAdd();
    static std::string GetSuiteName();
};
    // PlusTestCase.cpp
    std::string CPlusTestCase::GetSuiteName()
    {
            return " CPlus ";
    }

  記得要在PlusTestCase.h中包含 #include <string>

  然后在 PlusTestCase.cpp注冊(cè)我們的suite.

  CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase, CPlusTestCase::GetSuiteName());

  它將CPlusTestCase這個(gè)TestSuite注冊(cè)到一個(gè)指定的TestFactory工廠中。

  接下來(lái)我們寫一個(gè)注冊(cè)函數(shù)static CppUnit::Test* GetSuite(), 使其在運(yùn)行期生成一個(gè)Test.

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