C++單元測試架構的比較(zz)

來源:互聯網
上載者:User

 原文地址:http://hi.baidu.com/shuiyuan2004/blog/item/7d4b43eccdf5c2d32f2e213f.html

C++單元測試架構的比較

單元測試現在已經成為標準的編程實踐,但是C++缺少Java和.Net平台語言的反射機制,所以無法枚舉測試方法,必須手工添加,或者使用一些特別的宏,弄得代碼非常難看。Java語言單元測試是JUnit的天下,C#基本上都用NUnit,而C++則群花怒放,單元測試架構非常多,JUnit移植過來的CppUnit,Boost::test,CppTest,CxxTest, TUT等等。但是解決方案最好的是CxxTest和TUT,CxxTest採用的方法比較特殊,用Perl分析C++的源檔案,從中抽取測試方法,建立TestSuite。文法與JUnit非常相似,沒有使用進階的C++特性,也沒有定義特別的宏,無須寫額外的代碼。TUT也是一個不錯的解決方案,利用進階C++ Template功能,必須比較新的編譯器才支援,比如VC6和VS.NET 2002就不支援,必須VS.NET 2003以上或者Intel C++ Complier 8.1以上。

1、 TUT

結構架構簡單。添加新的測試工作量小;無須註冊測試;可移植性好(因其只需兩個標頭檔,就可以完成測試工作);便於裝卸;提供介面可以擴充其輸出方式等。

最大的優點:輕量級,便於裝卸和可擴充其輸出方式;

缺點:斷言似乎不是很好,只用了一個ensure()函數,不知道對複雜的測試是否支援;輸出的測試結果較為簡單。

2、 Boost::test

結構架構較為複雜。添加新的測試工作量也不大;提供多種測試方法,可註冊測試案例,也可不註冊;可移植性一般;裝卸不易;在控制異常、崩潰方面的能力勝過其它所有對手;擁有良好的斷言功能;大概能支援多種輸出方式,但更改輸出方式不易;支援測試套件。

最大的優點:控制異常崩潰的能力、良好的斷言、輸出結果較為詳細、編寫測試的方法靈活;

缺點:結構架構較為複雜,更改輸出方式不易,裝卸不易。

3、 CXXTest

結構架構的複雜性處於TUT與boost::test之間。添加新的測試工作量非常小;無須註冊測試案例;可移植性很好;便於裝卸;控制異常、崩潰方面的能力也不錯;擁有良好的斷言功能;支援多種輸出方式;支援測試套件。

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.