如何在项目中引入googtest(上)——通过编译器引入库

本文介绍了如何在自己的项目中集成googletest进行测试驱动开发,包括下载与编译googletest库,设置静态库和头文件路径,解决编译时的RuntimeLibrary匹配问题,以及编写并运行测试代码。
摘要由CSDN通过智能技术生成

一、背景

关于googletest之前的博客已经详细地做了一个叙述:参考链接
现在想再自己写的一个Demo中引入googletest并且采用测试驱动开发(Test-Driven Development,TDD)(即:先写测试案例,再完善功能代码,一边写、一边完善)的这种模式。现在将这过程中踩的坑,总结成此博客。

二、资源准备

2.1 源码链接

googletest资源链接

https://gitcode.net/mirrors/google/googletest?utm_source=csdn_github_accelerator

2.2 解压编译

①解压缩后得到如下文件:
在这里插入图片描述
②通过VS打开gtest中的CMakeList:
路径为:

googletest-master\googletest-master\CMakeLists.txt

在这里插入图片描述
③编译静态库:
在这里插入图片描述

2.3 获取生成库和头文件

生成完成后在路径下得到4个静态库:

googletest-master\googletest-master\out\build\x64-Debug\lib

注意:带d的是Windows的debug版本库,不带d的是Windows的release版本库
在这里插入图片描述
获取头文件:

googletest-master\googletest-master\googletest\include

在这里插入图片描述

三、准备Demo

3.1 新建一个工程文件在这里插入图片描述

3.2 新建一个libinlucde文件

在这里插入图片描述
将4个编译好的静态库文件放入lib
在这里插入图片描述
将gtest文件放入inlucde中
在这里插入图片描述

3.3 将【静态库文件夹、头文件、静态库】引入项目

参考只都一本心术书的博客
①引入头文件夹: 项目–配置属性–c/c+±-常规–附加包含目录–编辑–添加工程
在这里插入图片描述
include路径(考虑到工程的可移植性,可以用右下角的宏定义对路径进行简略)比如$(ProjectDir)/include
在这里插入图片描述
引入lib文件夹: 项目–配置属性–链接器–常规–链接库依赖项–编辑–添加工程lib路径
(这里你可能会遇到没有链接器这个子选项的问题,解决方法:项目–属性–配置属性–常规–配置类型–选择动态链接库或者应用程序–应用)
在这里插入图片描述
include路径(考虑到工程的可移植性,可以用右下角的宏定义对路径进行简略)比如$(ProjectDir)/include
在这里插入图片描述

引入库: 项目–配置属性–链接器–输入–附加依赖项
在这里插入图片描述

四、报错警告

引入之后,我们发现项目已经可以找到头文件了并且编译通过
在这里插入图片描述
但是引入测试代码的时候缺报错了:error LNK2038: 检测到“RuntimeLibrary”的不匹配项
在这里插入图片描述
原因:项目文件编译方式和库文件不匹配

库文件是MTD_StaticDebug,项目文件编译方式是MTD_DynamicDebug
参考链接
在这里插入图片描述

这四个选项对应的含义如下:

选项编译方式
多线程调试Dll (/MDd)MD_DynamicDebug
多线程Dll (/MD)MD_DynamicRelease
多线程(/MT)MD_StaticRelease
多线程(/MTd)(/MDd)MD_StaticDebug

但是有时候你会发现并不是这么简单,明明自己用的是Release模式,为什么选/MD还是会报错呢?
这个原因在于你在:工程属性->链接器->输入->附加依赖项
中添加的.lib有问题。一般lib文件会有后缀带d和不带d的两种,带d的对应的是Debug模式,不带d的对应的是Release模式。把这个改过来说不定就能解决你的问题了。

五、测试代码

#include<iostream>
#include"gtest/gtest.h"
using namespace std;
int main(int argc, char** argv)
{
	EXPECT_EQ(1 + 1, 2);
	testing::InitGoogleTest(&argc, argv);
	RUN_ALL_TESTS();
	return 0;
}

运行结果:
在这里插入图片描述

六、开始写Demo

采用测试驱动开发去写你的Demo吧!冲!冲!冲!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿天堂没有C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值