如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试

Visual Studio 包含下面这些 C++ 测试框架,无需进行额外下载:

  • 适用于 C++ 的 Microsoft 单元测试框架
  • Google Test
  • Boost.Test
  • CTest

Microsoft 单元测试框架项目添加后,VS2017编译不过,据说是VS的Bug,在最新的版本已经修复。由于没有最新VS,这里不再讲述。

错误 C1083 无法打开包括文件: “CppUnitTest.h”: No such file or
directory NativUnitTest d:\project\unittest\nativeunittest\nativeunittest.cpp 2

Boost.Test 和CTest没有用过,也不再讲述。

创建GoogleTest单元测试项目

在“文件”菜单上,选择“新建” > “项目” 。
依次展开“已安装” > “Visual C++” > “测试” 。
选择Google Test,本例项目命名为GoogleTestProject
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第1张图片
项目创建成功后,在测试资源管理器中点击全部运行(默认有生成测试实例),验证测试是否可行

如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第2张图片

测试资源管理器没有显示的话,在“测试”菜单上,选择“窗口” > “测试资源管理器”
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第3张图片

创建待测DLL项目(给既有项目添加单元测试的话,这步不用)

使用“Windows 桌面向导”创建 C++ 项目:
右键单击“解决方案资源管理器”中的解决方案名称,然后依次选择“添加” > “新建项目” 。
依次展开“已安装” > “Visual C++” > “Windows 桌面” 。
选择“Windows 桌面向导”,本例项目命名为DynamicLinkLibrary。
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第4张图片
按“创建”。 在下一个对话框中,在“应用程序类型”下选择“动态链接库 (dll)”,同时选中“导出符号”。
“导出符号” 选项生成可用来声明导出方法的便利宏。
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第5张图片
创建成功后,.h文件中声明要导出的函数。
声明符 __declspec(dllexport) 会导致类的公共和受保护成员在 DLL 外可见
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第6张图片
.cpp中定义要导出的函数
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第7张图片

将测试项目耦合到 DLL 项目

将 DLL 项目添加到测试项目的项目引用中:
右键单击解决方案资源管理器中的测试项目节点,并选择“添加” > “引用”。
在“添加引用” 对话框中,选择 DLL 项目并选择“添加” 。
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第8张图片
引用添加成功后,如下所示,可以看得到
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第9张图片
在主体单元测试 .cpp 文件中,将 DLL 代码的 .h 文件包括在内:

#include "pch.h"
#include "../DynamicLinkLibrary/DynamicLinkLibrary.h"

添加使用导出函数的基本测试:

TEST(TestCaseName1, TestName1) {
	CDynamicLinkLibrary DyLinkLibrary;
    EXPECT_EQ(1, DyLinkLibrary.Sum(0, 1));
}
TEST(TestCaseName1, TestName2) {
	CDynamicLinkLibrary DyLinkLibrary;
	EXPECT_EQ(1, DyLinkLibrary.Sum(0, 1));
}

TEST(TestCaseName2, TestName1) {
	CDynamicLinkLibrary DyLinkLibrary;
	EXPECT_EQ(1, DyLinkLibrary.Sum(0, 1));
}

生成解决方案,新测试出现在测试资源管理器中。在“测试资源管理器”中,选择“全部运行”。
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第10张图片

Debug

当某个测试项不通过时,可以右键单击此测试项,选中“调试所选测试”进行debug。
注意调试之前,在目标代码提前打好断点。
如何在 Visual Studio 中用GoogleTest编写 C/C++ 单元测试_第11张图片

你可能感兴趣的:(C++,单元测试,c++,GoogleTest)