01 cppunit 原始碼解讀

2021-08-21 08:58:49 字數 1575 閱讀 5267

背景 相關:

stl:標準模板庫 ,有六大元件:容器、迭代器、演算法、仿函式、迭代介面卡、空間配置器

design pattern:

設計模式(design pattern)代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。

cppunit的總體構成:

core:核心部分;

output:輸出管理;

helper:一些輔助類

extension:作為單元測試的延伸;

listener:監視測試程序和測試結果;

textui:執行單元測試的文字環境;

portability:對於不同平台的移植設定

核心core類的分析------——基本測試類

最基本的pattern:composite pattern,

將物件組合成樹形結構以表示「部分-整體」的層次結構。

在cppunit中,測試類分為兩種:耨寫測試類包含了單個測試,比如testcase,某些包括了若干測試類,比如test suit。

彼此相關的test case組合成乙個test suit。testsuit之間也可以相互巢狀包含。

testcase 是leaf test suit 是composit。

[test] 所有測試的抽象基類,規定了所有測試類應該具有的行為,對應composite pattern

中的component:

1>virtual dtor 虛析構函式;

2>virtual void run(testresult *result)=0  執行測試內容並蒐集測試結果;

3>virtual int counttestcases () const =0; 返回包含的測試物件的個數如果為testcase 就返回1;

4>virtual std::stringn getname() const=0; 返回測試的名稱,每個測試都有乙個名稱

[testfixture]

也是乙個抽象類,用於包裝測試類 有setup teardown 方法,利用其為測試提供所需的共用環境。

定義例項變數形成fixture  過載setup 初始化fixture 過載teardown 用於測試結束後資源**工作

[testcase]

派生自test和testfixture(多重繼承),具備兩者特性,用於實現乙個簡單額測試用例。

testcase中最重要的是run 方法。

run(testresult *result)

catch(e)

} catch

catch(....)

try() }

在這裡 run定義了乙個測試類的金額行為和順序:setup準備 runtest開始 teardown 結束

testcase 無法確定測試的具體行為留給派生的類解決

[testsuit]

一組相關聯的測試用例構成了乙個測試包testsuit。同樣派生自test沒有fixture。testsuit

維護了乙個private的測試物件陣列。

vectorm_tests;

const string  m_name;

cppunit原始碼解讀 1序言

感謝原創 記得2003年的春節假期,難得有時間可以靜下來充充電,於是有了研讀cppunit原始碼的念頭。一來是為了熟悉cppunit的使用環境,而來也是希望通過研讀原始碼汲取有益的東西,這一系列的文章便是整理自筆者當初的原始碼閱讀筆記。如何將諸多技術綜合運用到乙個實際的framework中來,筆者以...

學習筆記 解讀CppUnit原始碼2

上次我詳細的剖析了與test.h相互關聯的 test類是cppunit的核心。test這個類相信看了上一章就知道,也就起到測試用例的作用,但是畢竟乙個類的功能有限,如何擴充test類的功能呢?下面裝飾者模式就登場了。testdecorator.h 這個類中儲存了乙份test的指標,這個類的count...

學習筆記 解讀CppUnit原始碼6

看了前面5章的話,就可以了解cppunit大致的結構了。這裡講講一些並不是很核心但卻是不可貨缺的 看看他們雖然學不到優秀的設計知識,但是鞏固一下c 的基礎也不錯。sourceline.h c中關於檔名和 所在的行數有兩個巨集定義 file line 方便在除錯和其他場合輸出。而這個sourcelin...