C++測試框架的選擇

(金慶的專欄)

本文以表格形式總結了 “Exploring the C++ Unit Testing Framework Jungle” ( http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle ) 一文對各種單元測試框架的比較,並添加了原文所還沒有加入的Google Test. 並添加了另一項特性比較,即對Mock對象的支持。

各比較項爲:

1.加入新測試最小化工作量
2.便於修改和移植
3.便於裝配/拆卸測試環境(fixtures)
4.對異常以及崩潰很好的控制
5.好的斷言功能
6.支持不同的輸出方式
7.支持測試套件(suites)
8.對Mock對象的支持

 

框架

1.工作量

2.可移植性

3.fixtures

4.異常

5.斷言

6.各種輸出

7. 測試套件

8.Mock

CPPUnit

需RTTI, STL

支持

支持

很好

支持

支持

不支持

Boost.Test

一般

需RTTI, STL, Boost

支持

支持最好

支持

支持

支持

不支持

CppUnitLite

很好

不支持

不支持

很差

不支持

不支持

不支持

NanoCppUnit

僅Windows

支持

未知

支持

不支持

支持

不支持

Unit++

很多

一般

不支持

一般

不支持浮點數

未知

支持

不支持

CxxTest

很好

支持

支持

支持

支持

支持

支持

Google Test

很好

支持

支持

很好

未知

支持

不支持

原作者喜歡:CppUnit, Boost.Test, CppUnitLite, 和 CxxTest.

從支持Mock對象這一點來看,只有CxxTest支持。而Mock對於單元測試是很關鍵的。

另外摘錄一個對CxxTest的評論( http://www.cppblog.com/shuiyuan2004/archive/2007/08/29/31105.html )

CxxTest添加新的測試工作量非常小;無須註冊測試用例;可移植性很好;便於裝卸;控制異常、崩潰方面的能力也不錯;擁有良好的斷言功能;支持多種輸出方式;支持測試套件。

最大的優點:編譯即測試方式,並且可以雙擊結果行立即定位到相應的源代碼,相當吸引人;支持多種輸出,輸出結果較爲詳細;編寫測試簡單;

缺點:需要用到perl對測試代碼進行文法掃描,生成可執行代碼,需要用到makefile文件(不是必須);準備工作比較麻煩。

 

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