单元测试现在已经成为标准的编程实践,但是C++缺少Java和.Net平台语言的反射机制,所以无法枚举测试方法,必须手工添加,或者使用一些特别的宏,弄得代码非常难看。Java语言单元测试是JUnit的天下,C#基本上都用NUnit,而C++则群花怒放,单元测试框架非常多,JUnit移植过来的CppUnit、Boost::test、CppTest、CxxTest、TUT和GoogleTest等等。——摘自http://hi.baidu.com/shuiyuan2004/blog/item/7d4b43eccdf5c2d32f2e213f.html
GoogleTest
项目开发者Zhanyong Wan说在Google内部已经有数以千计的C++开发者在使用该框架,并且已经持续好几年了。Google Test是便携式的:它可以通过不同版本的GCC和MSVC编译器应用在多种平台上(Linux、Windows、Mac OS X等等)。你甚至可以将它用于Windows CE和Symbian这样的嵌入式系统中。很多平台的构建工具和测试运行器都处在开发当中,并且现在已经有Linux的Autotools支持了。因为该框架基于流行的xUnit架构,所以如果你以前使用过该家族中的任何一个测试框架,那么就很容易掌握它。不过GoogleTest不支持VC6。
更多描述可见http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide
另外一篇关于GoogleTest的文章http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
CppUnit
测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。今天给大家介绍的CppUnit即是XUnit家族中的一员,它是一个专门面向C++的测试框架。——摘自http://www.vckbase.com/document/viewdoc/?id=1258
更多Features详见http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page
Boost::test
结构框架较为复杂。添加新的测试工作量也不大;提供多种测试方法,可注册测试用例,也可不注册;可移植性一般;装卸不易;在控制异常、崩溃方面的能力胜过其它所有对手;拥有良好的断言功能;大概能支持多种输出方式,但更改输出方式不易;支持测试套件。
文章http://kb.cnblogs.com/a/1459054/简介了Boots::test的用法
CppTest
CppTest 最大的优点是容易理解、掌握和使用。学习如何使用 CppTest 创建单元测试和测试套件、设计测试装备和定制回归测试日志格式,熟悉 CppTest 提供的几个宏。——摘自http://www.ibm.com/developerworks/cn/aix/library/au-ctools3_ccptest/
CxxTest
结构框架的复杂性处于TUT与boost::test之间。添加新的测试工作量非常小;无须注册测试用例;可移植性很好;便于装卸;控制异常、崩溃方面的能力也不错;拥有良好的断言功能;支持多种输出方式;支持测试套件。