代碼的單元測試能夠極大的提升代碼的質量,減少代碼的各類隱患和bug,谷歌推出的單元測試框架Gtest就是做單元測試的一個極好的選擇。今天的教程主要來介紹Gtest環境的搭建。
1.Gtest的獲取與編譯
a.可以在https://github.com/google/googletest 上直接下載或者通過 git clone https://github.com/google/googletest.git 來獲取gtest的源碼
b.我們可以看到代碼的根目錄已經存在CMakeList.txt文件爲了不污染源代碼,我們在這個目錄下創建文件夾build, cd build,執行命令cmake .. 和 make ,執行成功以後,可以看到build文件夾下的生成了lib文件夾,這個文件夾包含了4個文件
看到這4個文件,說明我們的編譯已經成功了
2.Gtest文件的拷貝
這裏需要把生成的庫和源碼的一些文件放到系統中適當的位置,之後我們就可以像調用c++自帶的庫文件一樣使用gtest了。
a.把源碼中googletest\googletest\include\裏面的gtest整個文件夾拷貝到\usr\include
把源碼中googletest\googlemock\include\裏面的gmock整個文件夾拷貝到\usr\include
b. 把第一步1.b編譯出來的4個文件拷貝到\usr\lib 中
這就完成了所有的配置
這裏說的都是linux下的配置方法,如何在windows下配置呢?這裏有兩種變通方法.
1.直接安裝vs2019,vs2019已經可以直接創建Gtest工程了,不過該如何調用gmock庫需要自己探索一下
2.第二種辦法和linux下的環境搭建比較一致,需要先安裝cygwin,安裝之後就可以使用linux下的編譯和配置方法了
編譯方法和linux環境完全一致,拷貝文件的時候有些許的不同
a. cygwin64\usr\include 對應\usr\include
b. cygwin64\lib 對應\usr\lib
至此,linux和windows下的配置就完成了,接下來我們寫一個小的程序來檢驗環境是否成功搭建。
創建一個temp.cpp,內容如下:
#include<gtest/gtest.h>
#include<gmock/gmock.h>
int add(int a,int b){
return a+b;
}
TEST(TestMath,TestAdd){
EXPECT_EQ(add(2,3),5);
}
int main(int argc,char **argv){
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
執行命令g++ temp.cpp -lgtest -lgmock -lpthread (如果不引入gmock.h,編譯選項可以省去-lgmock),會生成a.out(linux) 或者a的a.exe,運行生成的文件,可以看到
說明我們的環境搭建成功了。
接下來就是真正要面對的問題,如何用googletest去真正測試我們的代碼,如何在測試的驅動下讓我們的接口更優雅簡潔和健壯。這纔是我們真正面對的挑戰