【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)

文章目录

相信大家都能感受到Visual Studio C++ 编辑器链接 lib 或 dll文件是一件非常头疼的事情。配置gooleTest的过程也不例外。
市面上很多教程,要么就不全,要么就缺少一些细节,导致我自己再配置的过程中,踩了很多坑。今天就记录一下。


前言

我使用的配置及工具如下:

软件版本
Visual Studio C++2022
CMake编译工具3.21
操作环境windows10/11

一、下载gtest并编译

1.1 下载gtest源码

需要到github下载gtest源码,使用源码进行编译 [点击这里],解压到本地。我解压的路径是D:/googletest-main,路径下的内容如下:

(关注“测试开发自动化” 弓中皓,获取CMake工具、获取安装教程、咨询博主)

在这里插入图片描述

1.2 源码构建

打开cmake软件:
where is the source 处输入你 gtest 的路径:D:/googletest-main
where to build the binaries处输入你的构建路径:D:/googletest-main/build

注意:这里 build 的文件夹不需要你自己创建,构建过程中会自动生成一个build文件夹,这里存储的是构建后的文件。

然后,分别点击 Configure 后,再选择你的visual studio 的版本,这里我的是2022版。

在这里插入图片描述

(关注“测试开发自动化” 弓中皓,获取CMake工具、获取安装教程、咨询博主)

再点击 Generate,如下所示:

在这里插入图片描述

点击Open Project后,显示界面如下:

在这里插入图片描述

同时,你会发现在你的路径下多了一个build文件夹。

在这里插入图片描述


二、生成静态库lib

2.1 配置属性

右键点击解决方案中的 ALL_BUILD -> 属性

在这里插入图片描述

设置好 配置 平台,点击确定。

在这里插入图片描述

注意:这里的 配置 和 平台 非常重要,一定要记住!!!如果与你的测试工程不一致,调用gtest时,必会报错。

同时,设置好调试器的配置和平台:

在这里插入图片描述

2.2 生成静态库lib

继续右键 ALL_BUILD -> 生成

在这里插入图片描述

回到你的安装路径下build的文件夹中会发现,在路径下D:\googletest-main\build\lib\Release有四个lib文件。

在这里插入图片描述

至此,我们生成了需要调用的静态库。


三、使用gtest

3.1 创建项目

创建自己的项目:

在这里插入图片描述

新建一个名称为 Gtest测试.cpp 的文件,并输入我们要测试的C++代码:

在这里插入图片描述

3.2 引入gtest静态库

打开我们自己的 Gest测试.cpp 的工程路径,将上面生成的4个lib文件复制到工程路径下:

在这里插入图片描述

3.3 引入gtest头文件

同时,将gtest安装 D:\googletest-main\googletest\include 路径下的gtest 文件夹也复制到工程路径下:

在这里插入图片描述


四、检查测试工程的配置

4.1 检查测试工程配置

注意:检查我们测试工程的 配置 和 平台,一定要与生成 lib 时的配置(2.1节)一模一样。否则,程序会报错。

我的测试工程配置如下(2.1节的配置一样):
在这里插入图片描述

注意:这里测试代码的 C/C++ → 代码生成 → 运行库 也要与 googletest生成lib时的配置一样,我这里全部设置成了 多线程调试DLL(\mDd)

4.2 链接静态库

右键工程 >> 属性 >> 链接器 >> 输入 >> 附加依赖项,将4个lib文件分别填入附加依赖项中,点击确定。
在这里插入图片描述

4.3 测试代码

编写测试代码:

#include <iostream>
#include "gtest\gtest.h"


int add(int a, int b)
{
	return a + b;
}


TEST(testCase, test0)
{
	EXPECT_EQ(add(2, 3), 5);
}
int main()
{
	testing::InitGoogleTest();
	RUN_ALL_TESTS();
	getchar();
	return 0;
}

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


总结

码字不易,如果对您有帮助,点赞+收藏+关注!

(关注“测试开发自动化” 弓中皓,获取CMake工具、获取安装教程、咨询博主)

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Google Mock是Google的一个开源C++单元测试框架,它是Google Test的一部分。它提供了一种方便的方式来创建和使用模拟对象,以便在单元测试中模拟和验证对象的行为。\[1\] 使用Google Mock的好处是它简化了模拟对象的创建和使用过程。只需包含"gtest/gtest.h"和"gmock/gmock.h"头文件,就可以开始使用Google Mock。此外,Google Mock还提供了强大的功能,例如模拟函数的返回值和参数,设置模拟对象的行为等等。\[1\] 下面是一个简单的C++示例,展示了如何使用Google Mock进行单元测试和模拟对象的创建: ```cpp #include <iostream> #include "gtest/gtest.h" #include <mockcpp/mockcpp.hpp> #include "frame/frame.h" inline unsigned int mok_sleep(unsigned int seconds) { std::cout << "running mok_sleep" << std::endl; } class FooEnvironment : public testing::Environment { public: void SetUp() override { MOCKER(sleep).stubs().will(invoke(mok_sleep)); } void TearDown() { } }; TEST(TestAdd, TestCase1) { EXPECT_EQ(5, Frameuitl::add(2, 3)); } TEST(TestAdd, TestCase2) { EXPECT_EQ(5, Frameuitl::add(2, 3)); } int main(int argc, char **argv) { std::cout << "gtest begin.." << std::endl; testing::AddGlobalTestEnvironment(new FooEnvironment()); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 通过使用gcov和lcov工具,可以查看代码的覆盖率情况。\[2\] 需要注意的是,Google Test中也有Google Mock,但是Google Mock只能用于模拟对象的函数,不能用于模拟C代码中的一般函数。如果需要模拟C代码中的函数,可以使用mockcpp框架。mockcpp是一个用于C++的轻量级模拟框架,可以模拟C代码中的函数。\[3\] 希望以上信息对您有帮助。 #### 引用[.reference_title] - *1* [C++类对象单元测试中的Mock使用](https://blog.csdn.net/qq_34799070/article/details/123434906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于gtest、mockcpp写C++LLT测试入门级教程](https://blog.csdn.net/qq_43003442/article/details/115706665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

米码收割机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值