軟件測試驅動開發(TDD)是以測試作為開發過程的中心,他是極限編程的重要組成部分,XUnit是一個基于測試驅動開發的測試框架,其成員很多包括:JUnit,PythonUint等,CppUint是其中一個專門面向c++的測試框架。
在CppUnit中小的測試單元稱為測試方法(TestMethod),多個測試方法又可以組成一個測試用例(TestCase),多個測試用例又組成一個測試包(TestSuite)
CppUnit提供了兩種測試環境,一種基于文本,一種基于GUI,在基于GUI的測試環境中,若測試不成功,進度條顯示紅色,反之則為綠色。
Vs環境下CppUnit開發的基本流程(MFC方式的TestRunner)
首先在所建工程中App的Instance()中屏蔽掉原有的對話框,代之以CppUnit的GUI,一般為以下形式:
CppUnit::MfcUI::TestRunner runner;
Runner.addTest(PlusTest::suite());//添加測試
runner.run();//顯示UI
// PlusTest::suite()該函數返回一個指向CppUnit::Test的指針,這個指針是整個測試的起點,CppUnit::TestFactoryRegistry()根據TestSuite的名稱返回TestFactoryRegistry工廠,然后調用工廠里的makeTest()對TestSuite進行組裝,這是一個遞歸調用,將建立起一個樹狀的測試結構
然后在工程頭文件中建立一個PlueTest.h的頭文件用以得到工廠并調用MakeTest函數
形式如下:
#include "cppunit/extensions/TestFactoryRegistry.h"
namespace PlusTest
{
CppUnit::Test*suite()
{
CppUnit::TestFactoryRegistry®istry =
CppUnit::TestFactoryRegistry::getRegistry("name");
return registry.makeTest();
}
}
Cpp文件所需頭文件為:
#include "cppunit/ui/mfc/TestRunner.h"
#include "cppunit/extensions/TestFactoryRegistry.h"
#include "PlusTest.h"
然后在工程中添加一個類,例如為:CplusTestCase
代碼如下:
#include <apr.h>
#include <cppunit/TestCase.h>
#include <cppunit/extensions/HelperMacros.h>
#include <unicode/unistr.h>
#pragma comment(lib,"icuuc.lib")
class CPlusTestCase :publicCppUnit::TestCase
{
//通過這幾個宏將類CPlusTestCase和方法testFind注冊到了測試列表中了
//開始創建一個TestSuite(測試包)
CPPUNIT_TEST_SUITE(CPlusTestCase);
//添加TestCase(測試用例)
CPPUNIT_TEST(testFind);
//結束創建TestSuite
CPPUNIT_TEST_SUITE_END();
public:
//!rief Set up context before running a test
virtual void setUp();//初始化數據成員
//!Clean up after the test run.
virtual void tearDown();//釋放清理工作
CPlusTestCase(void);
~CPlusTestCase(void);
//測試方法
void testFind();