C++測試架構的選擇

 衡量指標:

  1.加入新測試最小化工作

  2.便於修改和移植(作者的意思是說比如RTTI,STL,Exception這些高級特性可能妨礙在不同的平臺,不同版本編譯器下面的可移植性)

  3.便於裝配/拆卸測試環境

  4.對異常以及崩潰很好的控制

  5.好的斷言功能

  6.支持不同的輸出方式

  7.支持測試套件(suites)

  按照這個標準,對下面的test framework進行了評價:

  CPPUnit

  1.工作量多

  2.CPPUnit能在Windows , Linux上面運行,功能進行了很好的模塊化,但是另一方面,CPPUnit需要RTTI,STL,或者異常(作者不是很肯定)

  3.

  4.CPPUnit使用protectors包裝測試,並且捕捉所有的異常(嘗試識別某些異常),Linux下面不會捕捉系統異常,但是要增加自定義的包裝是很容易的。

  5.很好,支持一個最小集合的斷言語句,包括比較浮點數。

  6.支持

  7.支持

  總體評價:Overall, CppUnit is frustrating because it's almost exactly what I want, except for my most wanted feature. (CPPUnit夠悶的,不過我覺得改進易用性應該可以期待)

  Boost.Test(我嘗試使用,在VC.Net 2003下面遇到鏈接問題,還沒有解決)

  1.基本滿足

  2.和CPPUnit類似,但強調的是改代碼的難度以及依賴Boost本身

  3.避開了常規的setup/teardown結構,可以不需要動態生成fixture 對象,可以將fixture對象放到stack裏面。

  4.Boost.Test在這方面超過了所有的其他競爭對手

  5.Yes

  6.大概能支持,但改變輸出這件事情並不是很容易

  7.支持,...(這句如何理解?Yes, but with a big catch)

  CppUnitLite(由於作者比較了一個被他改動的版本,我不再關注)

  NanoCppUnit(這個庫甚至需要你去從web pages上面copy代碼,然後自己搞一個工程,我覺得我不太喜歡這種方式的package發佈,畢竟,我希望少操心,所以我也不關注)

  Unit++

  首先指出一個獨特的特性:More C++ Like,作者的意思是它沒有使用宏,的確,前面幾種framework開始一個測試的時候都使用了宏,這在許多C++ Library中是慣例,用來簡化一些代碼。我們通過從基類繼承從而創建測試包,當然在其他framework裏面本質也是這樣,但是都放在幕後進行,宏掩蓋了具體情況。

  1.不好

  2.一般般

  3.不支持

  4.表現平均

  5.文檔沒說如何支持不同的輸出

  6.不支持浮點數

  7.支持

  CxxTest

  首先作者認爲文檔最好(很重要?)另外作者指出,CxxTest的作者Erez Volk意識到我們是在寫工具幫助測試C++程序,所以不必受限於C++的特徵。

  1.非常好

  2.很好

  3.支持

  4.很好

  5.yes

  6.yes

  7.yes

發佈了14 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章