最近公司要我學習Google的測試框架google test:https://github.com/google/googletest. GoogleTest是C++的測試框架,我一個學習Java的,開頭好難啊。查了好多,才編譯成功。總結下,幫助后來人,基本上比我查到的詳細。
1.下載googletest: https://github.com/google/googletest
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控制台應用;
3.2 右擊工程名,點擊“屬性”,配置工程屬性; 展開“配置屬性——C/C++——常規”,在“附加包含目錄”中添加“.\gtest-1.7.0\include”(省略部分為gtest-1.8.0的路徑);
3.3 展開“C/C++——代碼生成”,在“運行庫”中修改為“多線程調試(/MTd)”;(其實你也可以選擇動態鏈接(/MD),前提是你之前編譯的gtest也使用了同樣是/MD選項)
3.4 展開“鏈接器——輸入”,在“附加依賴項”中添加第二步生成的gtestd.lib,附加上正確的路徑;在這里有個小技巧,.lib是靜態庫文件,你可以把它們放到一個專門的lib文件夾下,lib文件夾放哪自己看着辦吧,我是放在了googletest文件夾下。
上述是以Debug模式為例,Release模式就是把3.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。