天天看點

C++單元測試架構GoogleTestCppUnitBoost::testCppTestCxxTest

單元測試現在已經成為标準的程式設計實踐,但是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

Getting Start

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之間。添加新的測試工作量非常小;無須注冊測試用例;可移植性很好;便于裝卸;控制異常、崩潰方面的能力也不錯;擁有良好的斷言功能;支援多種輸出方式;支援測試套件。