Google新的C++測試架構發布

來源:互聯網
上載者:User
 

Google最近開源了其基於xUnit的C++單元測試架構。項目開發人員Zhanyong Wan說在Google內部已經有數以千計的C++開發人員在使用該架構,並且已經持續好幾年了。 

根據Google所述,此次發布的主要亮點體現在:

  • Google Test是攜帶型的:它可以通過不同版本的GCC和MSVC編譯器應用在多種平台上(Linux、Windows、Mac OS X等等)。你甚至可以將它用於Windows CE和Symbian這樣的嵌入式系統中。很多平台的構建工具和測試回合器都處在開發當中,並且現在已經有Linux的Autotools支援了。
  • 支援fatal和nonfatal斷言。在nonfatal失敗後測試還會繼續。這使得在一次單獨的編輯——編譯——測試周期中能發現並修複更多問題。
  • 對常見的測試需求提供很多斷言,同時你也可以輕鬆地對不常見的情況定義新的斷言。
  • 在Linux上,你可以編寫death tests以確保你的代碼在遇到期望的錯誤時崩潰。
  • 因為該架構基於流行的xUnit架構,所以如果你以前使用過該家族中的任何一個測試架構,那麼就很容易掌握它。

C++社區一直都覺得他們的單元測試工具不如Java和C#等其他現代語言的好,很多人還會問:“為什麼還要用另一個工具?它有什麼特別的?”。在其wiki的Faqs中,Googlers嘗試去解答這些問題。他們說他們並沒有宣稱其工具要比現存的好,而僅僅是將對其工作有協助的一些功能整合起來。從該網站上我們看到:

我們希望這個列表能協助你判定Google Test是否對你也有協助:

  • Google Test被設計為攜帶型的。在很多STL類型(如std::string及std::vector)無法編譯的地方它都能正常執行。它無需異常或者RTTI。所以,它能運行在Linux、Mac OS X、Windows及一些嵌入式作業系統上。
  • 事實證明Nonfatal斷言(EXPECT_*)可以節省大量時間,因為他們使得在一次單獨的編輯——編譯——測試周期中能報告多個失敗。
  • 編寫可以產生資訊的斷言非常簡單:就用流(stream)文法來附加任何額外的資訊就行,如ASSERT_EQ(5, Foo(i)) << " where i = " << i;。它不需要新的宏或者特殊的函數。
  • Google Test自動檢測你的測試,你如果想運行測試的話就無需列舉他們。
  • 沒有一個架構能預料到你所有的需求,因此Google Test提供了EXPECT_PRED*以方便地擴充你的斷言詞彙表。通過良好的文法,你可以使用EXPECT_PRED*來方便地定義你自己的斷言宏。
  • Death tests非常方便,它能確保恰當的情況可以觸發你在產品中的斷言。
  • 當宣告失敗是來自於內部的過程或者迴圈時,SCOPED_TRACE有助於你瞭解宣告失敗的上下文。
  • 你可以使用命名模式來決定運行哪些測試。當你想快速重現某個失敗時這會節省你大量時間。

Saptarshi Purkayastha花了一些時間來調研該架構並在其部落格上寫了一些想法。他的反應是積極的。 

該架構另一個讓人稱道的地方就是學習其基礎與進階特性都是那麼容易。它與xUnit非常像並且具備了可以與CppUnit抗衡的優勢。你可以從這裡學習基礎,從這裡學習進階特性。Predicate Assertions可能是我最喜歡的特性之一了,當我們調試遇到麻煩時就可以在程式中使用該特性。還有很多其他的斷言,我們還沒有深入地研究他們。但是自從第一次看到該架構,我們很多人就將它作為最好的測試架構之一了...

根據wiki所述,你可以查看初級手冊以儘快上手Google Test,然後請參考進階指南以瞭解更多內容。

可從這裡下載該架構,嘗試一下,然後告訴社區你的想法!

查看英文原文:Announcing: New Google C++ Testing Framework

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.