CppUnit源代碼分析總結

Created Saturday 05 March 2011


最近閱讀了晨光(Morning)寫的CppUnit源代碼解讀 文檔,文檔寫的非常不錯。下面是自己學習的一些總結。

CppUnit 中主要的類

TestCase

TestCase 代表一個測試用例,TestSuit 包含一組測試用例,這兩個類使用了Composite Pattern。

TestFixture 定義了運行測試用例的準備(setup)、清理(tearDown)操作接口。TestCase 執行時,依次調用setup, run, tearDown,這些函數需要在派生類中提供具體實現。這裏用到了 Template Method Pattern。TestCase類並不直接使用,定義測試用例時用TestCaller 。

在類的設計中,沒有將 TestFixture和Test的功能定義在一個類中,體現了“接口隔離”原則。

TestDecorator使用了Decorator Pattern。這個類中需要重新定義基類中的接口,去除接口的virtual屬性。

TestCaller的功能不太容易理解。它建立 了TestFixture類和Test Method之間的綁定關係。定義測試用例的過程如下:
1) 從TestFixture派生出測試類;
2) 在測試類中定義Test Method;
3) 在TestCaller 對象中,將測試類和Test Method綁定;
4) 將TestCaller對象添加到TestSuit 對象中;

TestResult

SynchronizedObject:提供了互斥機制,需要使用互斥機制的類從這個類派生。
在這個類中,包含ExclusiveZone、 SynchronizationObject兩個內部類。SynchronizationObject提供了lock、unlock操作接口,使用者需要 提供和具體平臺相關的實現。在需要進入互斥區域的時候,定義ExclusiveZone 對象,該對象的構造函數、析構函數中將會調用SynchronizationObject的lock、unlock。

Observer Pattern:TestResult和TestListener的角色分別是Subject和Observer。可以有多個對象對測試結果做出響應。

TextTestResultListener: 保存測試結果狀態。

TestResultCollector:收集Failures。

TestFactory

TestFacotryEntry負責管理TestFacotry對象,使用map保存name和TestFactory的映射關係。

NameEntries 負責管理TestFactoryEntry對象,使用map保存name和TestFactoryEntry的映射關係。這個類只能有一個對象實例,爲 此,使用Singleton Pattern。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章