2011-10-27 156 views
57

在設定我們未來幾年的C++單元測試框架的過程中,我們入圍了GoogleTestCppUnit。我對這兩方面都有一些經驗,而我的重點是GoogleTest。無論如何說服我的老闆,我需要一些事實所以我做了一些在互聯網上閱讀,包括手冊,維基頁面和一些來源。我想出了一份GoogleTest優勢清單和一個CppUnit優勢(圖形測試選手)。在這裏,他們被有序感知有用:GoogleTest vs CppUnit:事實

  • INSTANTIATE_TEST_CASE_P來實例化一個測試用例任意一組你想要的參數,包括笛卡爾乘積
  • FRIEND_TEST測試私有類成員(所有的遺留代碼)
  • 轉折斷言到斷點
  • 非致命斷言
  • 「開箱即用」 googlemock整合
  • 自動售貨機IC測試檢測,沒必要一一列舉
  • 測試可以被禁用和啓用
  • 測試,以可使用名模式
  • 值/類型參數化測試
  • 用戶定義謂詞來選擇運行斷言
  • 死亡測試
  • 更豐富的斷言
  • 類型斷言
  • 聲稱對子程序
  • 附加調試信息可以被添加到斷言使用< <
  • RecordProperty發射到XML輸出的特性最後一個值
  • SCOPED_TRACE有助於理解斷言失敗從內部發出的背景下,子程序或循環。
  • 的xUnit XML輸出,可以通過詹金斯被立即顯示未經XSLT轉換在
  • 之間支持自定義類型的打印機
  • 通過測試指示(我懷疑這也是可能的CppUnit的但還沒了它消耗時間還)
  • 測試事件監聽器API(用戶定義的插件)
  • 測試洗牌
  • 沒有例外和RTTI

甲我正確地認爲以上所有都不被CppUnit支持?有沒有一個有用的GoogleTest功能不可用在CppUnit我很想念?

最後但並非最不重要:有沒有任何不錯的CppUnit功能,GoogleTest 缺少

謝謝!

+5

[比較C++單元測試框架]的一些答案(http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks)專門解決GoogleTest功能。 –

+2

幾年前,我正在做一個類似的調查,GoogleTest不在那時。我決定使用CXXTest,它有一個機制,可以通過Perl的預分析步驟來枚舉測試用例。這遠遠優於CppTest。這就是說,我對GoogleTest一無所知。 –

+1

圖形測試運行器是一個優勢?通常你想要一些可以輕鬆自動化的東西,因爲自動化意味着你可以更容易和更頻繁地獲得測試反饋。 –

回答

7

如果您使用的是舊版本的gcc編譯器,或者您的代碼在測試下運行在vxWorks(或VxSim)上,那麼您可能比ctest更有機會使用Googletest框架。

在另一方面,googletest框架的另一特徵是3個不同的水平安裝/拆卸的可用性:

每個節目
    • 每測試用例(或測試組)
    • 每個個體測試實例

    不確定這是否在cppUnit中受支持,但這可能非常方便,尤其是在遺留系統中。

    此外,Eclipse CDT還有一個googletest插件。

  • 3

    如果您還沒有看過xUnit++,我特意說它是因爲我對可用的(包括gtest)感到不滿。大多數列表都是支持的,如果不是,如果它是「必備」功能,我可能會願意添加它。

    +0

    您可以在寬鬆的開源許可證下發布它嗎?像Apache 2.0或MIT許可證一樣? –

    +0

    我真的不記得正在使用哪個許可證,但我認爲這是MIT許可證。 – moswald

    +0

    非常感謝您,但雖然文字相同,但License.txt並未說明它是MIT許可證。你介意添加它嗎(當然,如果你有時間的話),如果沒關係的話?像這樣http://opensource.org/licenses/MIT?我認爲這將允許更多人使用並嘗試這個美妙的框架:-) –