CppUnit源碼解讀(1)--序言

序言


這一系列的文章摘選自筆者的《CppUnit源碼解讀》。 CppUnit是一個用c++語言實現的Open Source的單元測試框架,屬於xUnit系列中的一員,是從JUnit移植過來的。

[引言]

如何將諸多技術綜合運用到一個實際的framework中來,筆者以爲,CppUnit爲我們提供了一個難易適中的參考範例。這應該是一個很好的例子,因爲它不甚複雜,卻匯聚了一個framework所必需的某些設計思想以及實現技巧。在這裏,我們可以看到STL的靈活使用(包括一些簡單的traits技法),Design Pattern的綜合運用(比如:Composite,Factory,Decorator,Singleton,Observer等)。

當然,也應該指出,由於CppUnit還在不斷改進中,其代碼中未免還有“敗筆”及不盡如人意之處。但是,瑕不掩瑜,並且從中我們也可以感受到一個成熟框架的演進過程。

由於有過一點framework的設計經驗和體會,筆者在閱讀CppUnit源碼的過程中,時常能有共鳴,並且對於框架的設計者在某些細節的處理方法,也深以爲然,偶爾也有“英雄所見略同”的感嘆。希望可以通過筆者的講解,使大家也能夠同樣有親歷之感。

[CppUnit的簡單身世] [CppUnit的總體構成] [幾點說明]
 

CppUnit是xUnit系列中的c++實現版本,它是從JUnit移植過來的,第一個移植版本由Michael Feathers完成,相關信息可以在http://www.xprogramming.com/software.htm找到。它是操作系統相關的,隨後,Jerome Lacoste將之移植到了Unix/Solaris,在上述連接中也能找到該版本的相關信息。CppUnit項目就是基於這些版本建立起來的。有關CppUnit的討論可以在http://c2.com/cgi/wiki?CppUnit找到,在那裏你還可以找到CppUnit先前的版本以及許多其它操作系統環境下的移植版本。這個庫受GNU LGPL(Lesser General Public License)的保護。作者包括:Eric Sommerlade ([email protected]),Michael Feathers ([email protected]),Jerome Lacoste ([email protected]),J.E. Hoffmann ,Baptiste Lepilleur ,Bastiaan Bakker ,Steve Robbins

這裏所選用的是CppUnit 1.8.0版,你可以從http://sourceforge.net/projects/cppunit/下載到最新版本。

 

作爲一個完整的CppUnit framework,雖然源碼所在的實際路徑可能不盡相關,但從邏輯上講它們被劃爲如下幾個部分:

  • core:CppUnit的核心部分
  • output:掌管結果輸出
  • helper:一些輔助類
  • extension:作爲單元測試的延伸,對CppUnit core部分的擴展(比如:常規測試,重複測試)
  • listener:監視測試進程和測試結果
  • textui:一個運行單元測試的文本環境
  • portability:提供針對不同平臺的移植設置

上述所有的內容均被置於CppUnit名字空間之內。

 

  • 本文主要內容依據CppUnit源碼而來,部分內容還來自於源碼自身所附的註釋、ChangeLog等
  • 本文只作源碼解讀,至於xUnit家族的相關背景及基本知識筆者不準備敘述,讀者可以參看相關文章
  • 對於文中所涉及的Design Pattern,Refactoring,STL等相關知識,請讀者參看相關資料。
  • 除了文章本身,文中所列源碼,也夾帶了morning的一些註釋,用以進一步說明代碼意圖,註釋中方括號內爲morning的疑問
  • 爲了節省篇幅、簡化內容、突出主題,文中未列出全部代碼,而是有選擇的給出部分代碼
  • 由於工作的緣故,撰寫這一系列的文章是陸續進行的,因此文字斟酌、行文的前後一致性方面不甚考究,在此請諸位見諒。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章