一、設置一個新的測試項目

  在用google test寫測試項目之前,需要先編譯gtest到library庫并將測試與其鏈接。我們?yōu)橐恍┝餍械臉嫿ㄏ到y(tǒng)提供了構建文件: msvc/ for Visual Studio, xcode/ for Mac Xcode, make/ for GNU make, codegear/ for Borland C++ Builder.

如果你的構建系統(tǒng)不在這個名單上,在googletest根目錄有autotools的腳本(不推薦使用)和CMakeLists.txtCMake(推薦)。你可以看看make / Makefile來了解如何編譯Google Test(基本上你想在頭文件中使用GTEST_ROOT和GTEST_ROOT / include來編譯src / gtest-all.cc路徑,其中GTEST_ROOT是Google測試根目錄)。

  一旦你能夠編譯google test庫,您應該為您的測試程序創(chuàng)建一個項目或構建目標。Make sure you have GTEST_ROOT/include in the header search path so that the compiler can find "gtest/gtest.h" when compiling your test.把google test庫加到你的測試項目中(比如:在VS中在gtest.vcproj上添加依賴)。

二、基本概念

當使用谷歌測試,您首先要寫斷言,斷言是檢查條件是否為真的語句。一個斷言的結果可以是成功,非致命性失敗,或致命的失敗。如果一個致命失敗出現(xiàn),它會終止當前的函數(shù);否則程序繼續(xù)正常運行。

測試使用斷言驗證代碼的行為。如果一個測試崩潰或者有一個失敗的斷言,那么失敗;否則成功。

一個測試用例包含一個或多個測試。 您應該將測試分組為反映測試代碼結構的測試用例。當測試用例中的多個測試需要共享公共的對象和子程序時,你可以把它們放進一個test fixture class(測試夾具類)。

一個測試程序可以包含多個測試用例。

現(xiàn)在我們將解釋如何編寫測試程序,從單個斷言級別開始,并構建測試和測試用例。

三、斷言

    Google Test斷言是類似于函數(shù)調(diào)用的宏。您可以通過對其行為進行斷言來測試類或函數(shù)。當斷言失敗時,Google Test會打印斷言的源文件和行號位置以及失敗消息。您還可以提供自定義失敗消息,該消息將附加到Google測試的信息中。

斷言是成對的,測試同一件事,但對當前函數(shù)有不同的影響。 ASSERT_ *版本在失敗時會生成致命錯誤,并中止當前函數(shù)。 EXPECT_ *版本生成非致命性故障,不會中止當前函數(shù)。通常優(yōu)先使用EXPECT_ *,因為它們允許在測試中報告多個故障。但是,如果失敗時函數(shù)繼續(xù)運行沒有意義,則應使用ASSERT_ *。

因為失敗的ASSERT_ *立即從當前函數(shù)返回,可能跳過其后的清理代碼,它可能導致資源泄漏。根據(jù)泄漏的性質(zhì),它可能值得修復也可能不值得修復--所以把這個記在心里,如果你有一個堆檢測錯誤需要注意是什么導致的。

要提供自定義失敗消息,只需使用<<運算符或一系列此類運算符將其流式傳輸?shù)胶曛屑纯?。一個例子:

我想了解如何學習

姓名:
手機:
留言: