2. 使用
參考:
CppUnit測試框架入門 http://www.vckbase.com/document/viewdoc/?id=1258
Unit testing with CPPUnit http://www.codeproject.com/KB/library/Using_CPPUnit.aspx
visual studio 2005 wizard for cpp unit http://www.nabble.com/visual-studio-2005-wizard-for-cpp-unit-td4809724.html
3. 框架
本節(jié)把CPPUNIT的框架分為三個部分進行簡單介紹。
1) 測試對象族
CPPUNIT的測試對象的類關系圖:
Test:所有測試對象類的抽象基類,主要是定義run方法和統(tǒng)計子對象個數(shù)和查找遍歷子對象的方法;
TestFixture:該類非常簡單,只定義了兩個方法setUp和tearDown,作為測試對象的準備和拆除方法,一般用戶編寫的測試類都直接繼承它;
TestComposite、TestLeaf:根據(jù)設計模式中組合模式而設計的兩個類,都繼承自Test;
TestSuite:具體化了TestComposite的內(nèi)容存儲方式、添加子對象接口等等。該類對象包含了若干測試對象,作為測試對象的容器,而且可以嵌套;
TestRunner: 控制測試對象的構(gòu)造和測試對象執(zhí)行的類;
TestCase: 定義了一個測試對象要實現(xiàn)的具體接口,同時繼承TestFixture的setUp和tearDown;
接口
TestCaller: 使用了設計模式中的策略模式,作為測試對象的終封裝類,提供了測試運行的策略,在測試執(zhí)行中扮演了重要的角色。它是一個模板類。
2) 信息收集與顯示族
CPPUNIT的測試信息收集與顯示的類關系圖
Outputter:是所有測試輸出類的抽象基類,定義了write方法;
CompilerOutputter:以編譯器信息類似方式輸出測試信息,使用TestResultCollector獲取測試信息;
TextOutputter:以文本流的方式輸出測試信息,同樣使用TestResultCollector獲取測試信息;
TestListener:以設計模式中觀察者模式定義了Observer所應該具有的從TestResult獲取測試步驟信息的方法;
TestSuccessListener:實現(xiàn)了TestListener接口,同時繼承了SynchronizedObject了從而具有線程安全性;
SynchronizedObject:該類實現(xiàn)了lock和unlock操作;
ExclusiveZone:使用SynchronizedObject進行了臨界區(qū)的加鎖和解鎖操作;
TestResult:這個測試信息的收集者,在觀察者模式中扮演Subject角色,是它把測試的各個步驟的信息通知到所有Listener對象的。
3)測試對象管理族
CPPUNIT測試對象管理類關系圖
TestFactory:運用了設計模式中工廠設計模式,這里只定義了一個makeTest方法,是一個抽象基類;
TestSuiteFactory:該類繼承自TestFactory,而且是模板類,是生成TestSuite對象的工廠;
TestFactoryRegistry:管理TestFactory對象的類(這里繼承自TestFactory個人感覺有點不太恰當);
AutoRegisterSuite:模板類,自動把特定的TestSuiteFactory對象注冊到TestFactoryRegistry對象;
TestSuiteBuilderContextBase、TestSuiteBuilderContext:用于構(gòu)建測試對象的類,詳細見代碼分析部分。