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

四、下面是完整的程序清單

// PlusTestCase.h
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
#include <cppunit/TestCase.h>
#include <CppUnit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestAssert.h>
class CPlusTestCase : public CppUnit::TestCase 
{
 //通過這幾個(gè)宏,我們把CPlusTestCase和testAdd注冊(cè)到了測(cè)試列表當(dāng)中.
 CPPUNIT_TEST_SUITE(CPlusTestCase);  //聲明一個(gè)測(cè)試包
    CPPUNIT_TEST(testAdd);     //聲明一個(gè)測(cè)試用例
    CPPUNIT_TEST_SUITE_END(); 
public:
 CPlusTestCase();
 virtual ~CPlusTestCase();
 void testAdd(); //測(cè)試方法
 static std::string GetSuiteName();
 //寫一個(gè)注冊(cè)函數(shù), 使其在運(yùn)行期生成一個(gè)Test
 static CppUnit::Test* GetSuite();
};
// PlusTestCase.cpp
#include "stdafx.h"
#include "UnitTest.h"
#include "PlusTestCase.h"
#include "plus.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//注冊(cè)一個(gè)測(cè)試suite到一個(gè)指定的TestFactory工廠中
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase, CPlusTestCase::GetSuiteName());
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPlusTestCase::CPlusTestCase()
{
}
CPlusTestCase::~CPlusTestCase()
{
}
void CPlusTestCase::testAdd()
{
 CPlus plus;
 int nResult = plus.Add(10, 20); //執(zhí)行Add操作
 CPPUNIT_ASSERT_EQUAL(30, nResult); //檢查結(jié)果是否等于30 
}
std::string CPlusTestCase::GetSuiteName()
{
 return "CPlus";
}
/*
 * 注意:CPlusTestCase::GetSuite()返回一個(gè)指向CppUnit::Test的指針.
 *  這個(gè)指針是整個(gè)測(cè)試的起點(diǎn)。
 *  CppUnit::TestFactoryRegistry::getRegistry()根據(jù)TestSuite的名字返回TestFactoryRegistry工
 *  然后調(diào)用工廠里的makeTest()對(duì)TestSuite進(jìn)行組裝,將建立起一個(gè)樹狀的測(cè)試結(jié)構(gòu)。
 */
CppUnit::Test* CPlusTestCase::GetSuite()
{
 CppUnit::TestFactoryRegistry& reg = CppUnit::TestFactoryRegistry::getRegistry(CPlusTestCase::GetSuiteName());
 return reg.makeTest();
}
// UnitTest.cpp
#include "stdafx.h"
#include "UnitTest.h"
#include <cppunit/ui/mfc/TestRunner.h>
#include "PlusTestCase.h"

/////////////////////////////////////////////////////////////////////////////
// CUnitTestApp initialization
BOOL CUnitTestApp::InitInstance()
{
 …
 CppUnit::MfcUi::TestRunner runner;
 runner.addTest(CPlusTestCase::GetSuite()); //添加測(cè)試 runner.addTest(CMinusTestCase::GetSuite());
 runner.run(); //show UI
/* CUnitTestDlg dlg;
 m_pMainWnd = &dlg;
 int nResponse = dlg.DoModal();
 if (nResponse == IDOK)
 {
  // TODO: Place code here to handle when the dialog is
  //  dismissed with OK
 }
    else if (nResponse == IDCANCEL)
 {
  // TODO: Place code here to handle when the dialog is
  //  dismissed with Cancel
 }
*/
 return FALSE;
}

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