您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > cppUnit
用CppUnit做C單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/25 10:51:54 ] 推薦標(biāo)簽:軟件測(cè)試 開源 測(cè)試

  測(cè)試過程如下

啟動(dòng)程序
點(diǎn)擊“Run”
調(diào)用Call setUp()方法: 構(gòu)建我們的測(cè)試對(duì)象fixture
調(diào)用第一個(gè)測(cè)試方法
調(diào)用tearDown() 方法,清除對(duì)象
調(diào)用Call setUp()方法: 構(gòu)建我們的測(cè)試對(duì)象fixture
調(diào)用第一個(gè)測(cè)試方法
調(diào)用Call setUp()方法: 構(gòu)建我們的測(cè)試對(duì)象fixture
...
像下面的形式:

#include "DiskDataTestCase.h"

CPPUNIT_TEST_SUITE_REGISTRATION(DiskDataTestCase);


void DiskDataTestCase::setUp()
{
fixture = new DiskData();
}

void DiskDataTestCase::tearDown()
{
delete fixture;
fixture = NULL;
}


void DiskDataTestCase::loadTest()
{
// our load test logic
}


void DiskDataTestCase::storeTest()
{
// our store test logic
}


編寫測(cè)試用例

  一旦我們知道我們要測(cè)什么之后,我們可以寫測(cè)試用例了。我們能夠執(zhí)行所有的我們需要的操作:使用普通庫函數(shù),第三方庫,win32api庫函數(shù),或簡(jiǎn)單使用c++內(nèi)部操作

  有時(shí)候,我們需要調(diào)用外部輔助文件或者數(shù)據(jù)庫,比較外部文件和內(nèi)部數(shù)據(jù)是否一致。

  每發(fā)現(xiàn)一個(gè)錯(cuò)誤時(shí)9比如發(fā)現(xiàn)內(nèi)部數(shù)據(jù)和外部數(shù)據(jù)不同我們創(chuàng)建一個(gè)異常,使用 CPPUNIT_FAIL(message) 來顯示異常信息。

  檢測(cè)一個(gè)條件使用
CPPUNIT_ASSERT(condition):如果為false拋出異常
CPPUNIT_ASSERT_MESSAGE(message, condition): 如果為false拋出制定的信息。
CPPUNIT_ASSERT_EQUAL(expected,current): 檢測(cè)期望值
CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,current): 當(dāng)比較值不相等時(shí)候拋出的制定的信息。
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta): 帶精度的比較
  下面是測(cè)試loadTest的例子,
//
// These are correct values stored in auxiliar file
//
#define AUX_FILENAME "ok_data.dat"
#define FILE_NUMBER 19
#define FILE_STRING "this is correct text stored in auxiliar file"

void DiskDataTestCase::loadTest()
{
// convert from relative to absolute path
TCHAR absoluteFilename[MAX_PATH];
DWORD size = MAX_PATH;

strcpy(absoluteFilename, AUX_FILENAME);
CPPUNIT_ASSERT( RelativeToAbsolutePath(absoluteFilename, &size) );

// executes action
CPPUNIT_ASSERT( fixture->load(absoluteFilename) );

// ...and check results with assertions
LPDATA loadedData = fixture->getData();

CPPUNIT_ASSERT(loadedData != NULL);
CPPUNIT_ASSERT_EQUAL(FILE_NUMBER, loadedData->number);
CPPUNIT_ASSERT( 0 == strcmp(FILE_STRING,
fixture->getData()->string) );
}

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