最近公司要我學習Google的測試框架google test:https://github.com/google/googletest. GoogleTest是C++的測試框架,我一個學習Java的,開頭好難啊。查了好多,才編譯成功。總結下,幫助後來人,基本上比我查到的詳細。git
1.下載googletest: https://github.com/google/googletest github
2.以VS爲例,在VS中導入msvc/gtest.sln,而後從新編譯,debug、release兩個模式都要編譯。編譯後,在msvc/gtest/下有debug、release兩個文件夾。多線程
msvc\gtest\Debug - Debug方案下的二進制文件:gtestd.lib、gtest_maind.lib(注意主文件名的d後綴)
msvc\gtest\Release - Release方案下的二進制文件:gtest.lib、gtest_main.lib框架
至此,準備階段完成。(也能夠不用VS構建,用Xcode、GNU make、 Borland C++ Builder)。學習
3.建立具體的測試項目測試
3.1 在VS2015中,建立WIN32控制檯應用;ui
3.2 右擊工程名,點擊「屬性」,配置工程屬性; 展開「配置屬性——C/C++——常規」,在「附加包含目錄」中添加「.\gtest-1.7.0\include」(省略部分爲gtest-1.8.0的路徑);google
3.3 展開「C/C++——代碼生成」,在「運行庫」中修改成「多線程調試(/MTd)」;(其實你也能夠選擇動態連接(/MD),前提是你以前編譯的gtest也使用了一樣是/MD選項)spa
3.4 展開「連接器——輸入」,在「附加依賴項」中添加第二步生成的gtestd.lib,附加上正確的路徑;在這裏有個小技巧,.lib是靜態庫文件,你能夠把它們放到一個專門的lib文件夾下,lib文件夾放哪本身看着辦吧,我是放在了googletest文件夾下。線程
上述是以Debug模式爲例,Release模式就是把3.三、3.4換成對應於Release的就能夠。
4. 項目代碼
stdafx.h:
#include "targetver.h" #include <stdio.h> #include <tchar.h>
FirstGtest.cpp:
#include "stdafx.h" #include <gtest\gtest.h> int _tmain(int argc, _TCHAR* argv[]) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
add.cpp:
#include "stdafx.h" int Add(int a, int b) { return a + b; }
testCase.cpp:
#include "stdafx.h" #include <gtest\gtest.h> extern int Add(int a, int b); TEST(testCase, test0) { EXPECT_EQ(14, Add(4, 10));//EXPECT_EQ是比較兩個值是否相等 } TEST(testCase, test1) { /*本用例不過*/ EXPECT_EQ(6, Add(5, 7)); } TEST(testCase, test2) { EXPECT_EQ(28, Add(10, 18)); }
從上邊能夠看出:3個測試中一個失敗,兩個成功。
5. 編譯成功以下:
6.若是出現如下錯誤:就是3.3步修改錯了。
7.Release模式下:
3.3 展開「C/C++——代碼生成」,在「運行庫」中修改成「多線程(/MT)」;
3.4 展開「連接器——輸入」,在「附加依賴項」中添加第二步生成的gtest.lib,附加上正確的 路徑;
OK。