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文件(不是必须);准备工作比较麻烦。

 

你可能感兴趣的:(C++测试框架的选择)