在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 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
#include
#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)设置为启动项目运行结果如下: