一、設置一個新的測試項目
在用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ù)胶曛屑纯?。一個例子:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26