(金慶的專欄)
本文以表格形式總結了 “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文件(不是必須);準備工作比較麻煩。