Posted on 2009-01-08 00:08
S.l.e!ep.¢% 閱讀(684)
評論(2) 編輯 收藏 引用 所屬分類:
test
Google新的C++測試框架發(fā)布啦
作者 Mike Bria譯者 張龍 發(fā)布于 2008年7月17日 上午1時39分
-
.NET,
-
Agile,
-
Java
- 主題
-
工件和工具,
-
單元測試
- 標(biāo)簽
-
C++
Google最近開源了其基于xUnit的C++單元測試框架。項目開發(fā)者Zhanyong Wan說在Google內(nèi)部已經(jīng)有數(shù)以千計的C++開發(fā)者在使用該框架,并且已經(jīng)持續(xù)好幾年了。?
根據(jù)Google所述,此次發(fā)布的主要亮點體現(xiàn)在:
- Google Test是便攜式的:它可以通過不同版本的GCC和MSVC編譯器應(yīng)用在多種平臺上(Linux、Windows、Mac OS X等等)。你甚至可以將它用于Windows CE和Symbian這樣的嵌入式系統(tǒng)中。很多平臺的構(gòu)建工具和測試運行器都處在開發(fā)當(dāng)中,并且現(xiàn)在已經(jīng)有Linux的Autotools支持了。
- 支持fatal和nonfatal斷言。在nonfatal失敗后測試還會繼續(xù)。這使得在一次單獨的編輯——編譯——測試周期中能發(fā)現(xiàn)并修復(fù)更多問題。
- 對常見的測試需求提供很多斷言,同時你也可以輕松地對不常見的情況定義新的斷言。
- 在Linux上,你可以編寫death tests以確保你的代碼在遇到期望的錯誤時崩潰。
- 因為該框架基于流行的xUnit架構(gòu),所以如果你以前使用過該家族中的任何一個測試框架,那么就很容易掌握它。
C++社區(qū)一直都覺得他們的單元測試工具不如Java和C#等其他現(xiàn)代語言的好,很多人還會問:“為什么還要用另一個工具?它有什么特別的?”。在其wiki的Faqs中,Googlers嘗試去解答這些問題。他們說他們并沒有宣稱其工具要比現(xiàn)存的好,而僅僅是將對其工作有幫助的一些功能整合起來。從該站點上我們看到:
我們希望這個列表能幫助你判定Google Test是否對你也有幫助:
- Google Test被設(shè)計為便攜式的。在很多STL類型(如std::string及std::vector)無法編譯的地方它都能正常執(zhí)行。它無需異常或者RTTI。所以,它能運行在Linux、Mac OS X、Windows及一些嵌入式操作系統(tǒng)上。
- 事實證明Nonfatal斷言(EXPECT_*)可以節(jié)省大量時間,因為他們使得在一次單獨的編輯——編譯——測試周期中能報告多個失敗。
- 編寫可以生成信息的斷言非常簡單:就用流(stream)語法來附加任何額外的信息就行,如ASSERT_EQ(5, Foo(i)) << " where i = " << i;。它不需要新的宏或者特殊的函數(shù)。
- Google Test自動檢測你的測試,你如果想運行測試的話就無需列舉他們。
- 沒有一個框架能預(yù)料到你所有的需求,因此Google Test提供了EXPECT_PRED*以方便地擴展你的斷言詞匯表。通過良好的語法,你可以使用EXPECT_PRED*來方便地定義你自己的斷言宏。
- Death tests非常方便,它能確保恰當(dāng)?shù)那闆r可以觸發(fā)你在產(chǎn)品中的斷言。
- 當(dāng)斷言失敗是來自于內(nèi)部的過程或者循環(huán)時,SCOPED_TRACE有助于你了解斷言失敗的上下文。
- 你可以使用命名模式來決定運行哪些測試。當(dāng)你想快速重現(xiàn)某個失敗時這會節(jié)省你大量時間。
Saptarshi Purkayastha花了一些時間來調(diào)研該框架并在其博客上寫了一些想法。他的反應(yīng)是積極的。?
該框架另一個讓人稱道的地方就是學(xué)習(xí)其基礎(chǔ)與高級特性都是那么容易。它與xUnit非常像并且具備了可以與CppUnit抗衡的優(yōu)勢。你可以從這里學(xué)習(xí)基礎(chǔ),從這里學(xué)習(xí)高級特性。Predicate Assertions可能是我最喜歡的特性之一了,當(dāng)我們調(diào)試遇到麻煩時就可以在程序中使用該特性。還有很多其他的斷言,我們還沒有深入地研究他們。但是自從第一次看到該框架,我們很多人就將它作為最好的測試框架之一了...
根據(jù)wiki所述,你可以查看初級手冊以盡快上手Google Test,然后請參考高級指南以了解更多內(nèi)容。
可從這里下載該框架,嘗試一下,然后告訴社區(qū)你的想法!
查看英文原文:
Announcing: New Google C++ Testing Framework