在Visual Studio 2017和更高版本中,Google Test已作為C ++桌面開發工作負載的默認組件集成到Visual Studio IDE中。要驗證它是否已安裝在您的計算機上,請打開Visual Studio安裝程序,並在工作負載組件列表下找到Google Test:這里我使用的vs2019,win10系統。
在Visual Studio 2019中添加Google測試項目
- 在解決方案資源管理器中,右鍵單擊解決方案節點,然后選擇“添加”>“新建項目”。
- 將語言設置為C ++,然后在搜索框中鍵入test。 從結果列表中,選擇Google Test Project。
- 為測試項目命名,然后單擊“確定”。
配置測試項目
在出現的“測試項目配置”對話框中,您可以選擇要測試的項目。當您選擇一個項目時,Visual Studio會將引用添加到所選項目。如果不選擇任何項目,則需要手動添加對要測試的項目的引用。在靜態和動態鏈接到Google Test二進制文件之間進行選擇時,注意事項與任何C ++程序相同。
-
這里我選擇了自己的項目First Project。
設置其他選項
在主菜單中,選擇工具>選項> Google Test的測試適配器以設置其他選項。
添加包含指令
在您的測試.cpp文件中,添加所有需要的#include指令,以使程序的類型和功能對測試代碼可見。通常,該程序在文件夾層次結構中為上一層。如果鍵入#include“ ../”,將出現IntelliSense窗口,使您可以選擇頭文件的完整路徑。
-
為了避免在源文件的每個include語句中鍵入完整路徑,可以在Project > Properties > C / C ++ > General > Additional Include Directories中添加所需的文件夾,如下圖所示。
這樣,就可以編寫和運行Google測試了。
- 使用gtest進行測試
- 首先看一下gtest項目的結構:在新建gtest項目時,自動生成了pch.h和pch.cpp兩個文件,如下圖所示。這里對First Project項目下的a.h和a.cpp下的函數進行測試。
-
a.h中的函數為:判斷兩個字符串是不是兄弟字符串,即兩個字符串只有順序不一樣,其他完全一樣。
-
class brother { public: bool isBrotherStrs(string s1, string s2) { if (s1.size() != s2.size()) return false; unordered_map<char, int> map; for (int i = 0; i < s1.size(); i++) { map[s1[i]]++; } for (int j = 0; j < s2.size(); j++) { if (map.find(s2[j]) == map.end()) return false; else map[s2[j]]--; } for (int i = 0; i < s1.size(); i++) { if (map[s1[i]] != 0) return false; } return true; } };
測試代碼如下:這里僅是測試其中的一種情況,並非全部測試用例。
-
#include <iostream> #include <string> #include "pch.h" //#include "../First Project/**.h" #include "../First Project/a.h" using namespace std; TEST(isBrotherStrs, case1) { brother a; bool res = a.isBrotherStrs("abc", "cba"); EXPECT_EQ(1, a.isBrotherStrs("abc", "cba")); EXPECT_TRUE(res); } //:: testing :: InitGoogleTest()函數解析Google測試標志的命令行, //並刪除所有已識別的標志。 這允許用戶通過各種標志控制測試程序的行為. // 在調用RUN_ALL_TESTS()之前必須調用此函數,否則標志將無法正確初始化。 int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
然后將getst的測試項目(Sample-Test1)設置為啟動項目運行結果如下: