目录
环境
Visual Studio 2019
C/C++
Google Test
概述
在Visual Studio中,单元测试项目会随着安装各种不同的语言环境默认安装,比如安装了.net 开发环境时会安装NUnit MSTest等测试框架。我的环境里有本机单元测试项目,Google Test,因为较熟悉Google Test,本文以其为例介绍如何针对VS项目做Gtest单元测试。
步骤
创建被测项目、测试项目
- 首先创建了一个空解决方案CppUnittestForP1546.sln,然后在空解决方案下建立一个基于C++的空项目“ProP1546”,正常开发这个项目。
- 在同一个解决方案下,创建单元测试项目GTestForP1546: 鼠标点选解决方案右键->添加->新建项目,我们在项目模板搜索栏中输入Test/测试,或者点选测试,会出现前面概述里的界面,选择Google Test,创建一个单元测试项目即可。
配置被测项目、测试项目
接下来就是项目配置:
配置测试目标项目ProP1546,生成动态链接库
(1) 将ProP1546项目的配置类型变更为动态库 .dll 或静态库 .lib,这里我选择的是动态库(.dll):
ProP1546项目右键->属性->常规->配置类型->动态库(.dll)
(2) 将ProP1546项目的输出目录修改为ProjectDir(默认设置是SolutionDir)
ProP1546项目右键->属性->常规->输出目录,将SolutionDir替换为ProjectDir
——这样的话,生成的dll、lib的位置就在项目所在路径下,当然可以根据实际情况更改这个位置。
(3) 动态链接库导出函数的一些宏定义可以通过下面的方式设置:
项目属性 -> C/C++ -> 预处理器 -> 预处理器定义;
注意:_CRT_SECURE_NO_WARNINGS 为了 禁止显示状态错误C4996,更多详情可参考后文的“附加说明”。
配置单元测试项目GTestForP1546
(1) 将测试目标项目ProP1546添加至单元测试项目GTestForP1546引用中:
选中单元测试项目下的“引用”节点右键->添加引用->选择测试目标项目点击确定.
(2) 将测试目标项目ProP1546中公开的头文件所在目录,添加至单元测试项目GTestForP1546的附加包含目录:
选中单元测试项目GTestForP1546右键->C/C++->常规->附加包含目录->编辑
点击添加目录按钮,选择测试目标目录ProP1546的头文件所在目录。
(3) 将测试目标项目ProP1546的.lib 或 .dll 文件的输出目录,添加至单元测试项目GTestForP1546的附加库目录,并添加.lib文件名至附加依赖库。
a. 添加附加库目录
单元测试项目GTestForP1546右键属性->链接器->常规->附加库目录
将lib文件的输出目录添加到列表中
b. 添加库文件至附加依赖库
单元测试项目GTestForP1546右键属性->链接器->输入->附加依赖库
在随后打开的文本框中输入.lib(目标测试项目输出的lib文件名。)
最后要保证两个项目的配置和平台一致:
单元测试用例执行情况:
附加说明
关于禁止显示状态错误C4996
可参见:
严重性代码说明项目文件行 禁止显示状态错误C4996 ‘scanf‘: This function or variable may be unsafe.最全解决方法
关于找不到某个dll,解决方法
在项目属性页的“配置属性”->“调试”->“环境” 中编辑,把环境路径设置为dll的文件路径即可,注意末尾分号要用半角的。
关于使用动态链接库提示链接错误
可以借助工具dumpbin查看DLL的导出函数:
参考
vs项目中 包含目录、库目录、附加包含目录,附加库目录和附加依赖项
版权归原作者 Sophia_Rao 所有, 如有侵权,请联系我们删除。