C++开发测试工具gmock的安装与使用超详解

一、gmock介绍

gmock是google公司推出的一款开源的白盒测试工具。gmock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程。其作用就类似白盒测试中的打桩的概念。google 开源的跨平台C++单元测试框架,是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。
Google Mock(简称gmock)是Google在2008年推出的一套针对C++的Mock框架,它灵感取自于jMock、EasyMock、harcreat。它提供了以下这些特性:

  • 轻松地创建mock类
  • 支持丰富的匹配器(Matcher)和行为(Action)
  • 支持有序、无序、部分有序的期望行为的定义
  • 多平台的支持

二、gmock下载

gmock官网:https://github.com/google/googletest
官方文档:http://google.github.io/googletest/

截止到2022年2月,目前有三个发行版本(release):

  • v1.8.1
  • v1.10.0
  • v1.11.0(最新)

由于v1.10.0,v1.11.0以及之后的版本都不存在msvc,需要利用CMake进行编译,因此为简单起见,本文选择的版本是v1.8.1,有需要的也可以在这里进行下载:v1.8.1

三、gmock配置

3.1 打开解决方案

打开Visual Studio,进入googletest-release-1.8.1\googlemock\msvc\2015目录下,运行gmock.sln解决方案。
在这里插入图片描述

3.2 进行相应设置

编译gmock需要注意以下两点:
①解决方案的平台与目标程序一致,这里选择的是x64;
②版本也要与目标程序一致,这里选择的是release版本;
在这里插入图片描述
设置完成后,右键这三个项目——>生成,进行编译。
编译完成后,会在googletest-release-1.8.1\googlemock\msvc\2015\x64-Release文件夹下生成若干个文件,我们只需要gmock.lib文件(我编译的是release版),如下图所示。
在这里插入图片描述

3.3 目标程序的配置

将googletest-release-1.8.1\googlemock\include目录下的include文件夹内容和googletest-release-1.8.1\googletest\include目录下的include文件夹内容拷贝到我们的目标程序文件夹中,这里面是我们需要的头文件;在目标程序的属性里面设置头文件的包含目录。

设置lib文件的库目录(将.lib文件放在一个单独的文件夹中)如下图所示。
在这里插入图片描述
将lib文件填入附加依赖项:
右键——>属性——>链接器——>输入——>附加依赖项——>加入gmock.lib,如下图所示。
在这里插入图片描述

四、测试 Demo

编写代码之前,首先需要将解决方案的平台与目标程序一致,这里选择的是x64,然后版本也要与目标程序一致,这里选择的是release版本。
在这里插入图片描述
新建一个头文件,命名为Add.h,实现数值相加的功能,代码如下:

#pragma once


int Add(int i, int j)
{
	return i + j;
}

源程序demo.cpp代码如下:

#include "Add.h"  
#include "gmock/gmock.h"

TEST(Add, 负数) {
	EXPECT_EQ(Add(-1, -2), -3);	//相等
	EXPECT_GT(Add(-4, -5), -6); //大于(会报错)
}

TEST(Add, 正数) {
	EXPECT_EQ(Add(1, 2), 3);	//相等
	EXPECT_GT(Add(4, 5), 6);	//大于
}



int main(int argc, char** argv)
{
	testing::InitGoogleTest(&argc, argv);//注册需要运行的所有测试用例
	return RUN_ALL_TESTS();	//执行测试,成功返回0失败返回1
}

代码中,测试用例 Add包含两个测试,正数和负数(这里利用了Visual C++ 2005以上允许标识符包含Unicode字符的特性)。

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

在控制台界面中,通过的测试用绿色表示,失败的测试用红色表示。每个测试的启动用RUN表示,测试的结果用OK(测试成功)或FAILED(测试失败)表示。失败的测试会在RUN和FAILED中间打印输出错误代码行和原因。在最后一个双横线下方(==)显示所有用例和测试统计结果(测试数量、耗时成功测试数量、失败测试数量等)。

五、常见问题

如果读者也像我这样配置,很有可能会遇到这个问题:

错误 LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(demo3.obj 中) demo3 E:\ProjectTest\demo3\demo3\gmock.lib(gtest-all.obj)

在这里插入图片描述
错误原因:在release下,工程设置中运行库中设置成了"多线程调试 DLL (/MD)"。这个是设置应该是在debug下的设置,release下应该设置“多线程 DLL (/MT)”,如下图所示:

在这里插入图片描述

ok,经过如上配置,应该就没有问题了。


如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/82936133

以上便是本文的全部内容了,整理不易,如果对你有所帮助,记得点个赞哟~


参考:

  1. https://blog.csdn.net/gubenpeiyuan/article/details/50678697
  2. https://www.cnblogs.com/arxive/p/11220854.html
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Can测试工具是用于测试CAN(Controller Area Network)总线通信的软件工具,主要包括Canalyser、Canoe、Canalyzer等几种。Canalyser是一款功能强大、操作简单的工具,能够捕获CAN总线上的CAN帧并进行分析,包括检测报文、过滤报文、发送报文等。Canoe是一款功能更加强大、支持多种协议的全面集成工具,可以模拟ECU(Electronic Control Unit)的功能,实现系统集成测试、仿真环境的构建等。Canalyzer可以在CAN总线上捕获、分析高速CAN2.0B、低速CAN2.0A、单线CAN等多种CAN格式数据,同时还支持LIN、FlexRay等多种总线协议的分析。 Can测试工具的C开发主要指的是使用C语言进行Can测试工具开发。C语言是一种高效、跨平台、底层良好的语言,因此在控制器领域、嵌入式系统开发中得到广泛应用。Can测试工具使用C语言开发,一方面能够提高Can测试工具的性能和执行效率,另一方面能够提供更加灵活、可扩展的功能。由于开发Can测试工具需要了解Can总线通信协议、硬件接口、数据帧格式等方面的知识,同时C语言也需要一定的编程基础,因此Can测试工具的C开发需要开发人员有较好的专业知识和技能。通过使用C语言开发Can测试工具,能够提高Can总线测试的效率、精度和可靠性,为汽车电子系统的开发和测试提供重要的支持。 ### 回答2: Can测试工具是一种用于测试汽车电子控制系统的软件工具,它能够通过CAN总线与汽车ECU(电子控制单元)进行通信,获取ECU发送的数据,分析和调试数据,从而判断汽车电子控制系统是否正常工作。 Can测试工具通常是以C语言开发的,因为C语言是一种被广泛应用在嵌入式系统领域的高效编程语言,它具有代码简洁、执行效率高、可移植性好等特点,能够帮助开发者更好地开发出高效、稳定的Can测试工具。 在Can测试工具开发过程中,开发者需要熟悉相应的软件开发工具和硬件设备,例如PC机、CAN总线接口卡、多路继电器等。同时,开发者需要了解汽车电子控制系统的相关知识和技术,才能开发出功能完备、高效稳定的Can测试工具。 总的来说,Can测试工具C语言开发涉及多方面的知识和技术,需要开发者具备一定的工程实践经验和技术水平,才能顺利完成开发过程。 ### 回答3: CAN测试工具是常用于进行控制器局域网(CAN)诊断测试的软件工具。它可以用来测试和调试CAN总线时序和电气参数,诊断CAN及其节点的错误,确认CAN信号的正确连接和响应,并执行其他测试和测量。 在开发CAN测试工具时,需要掌握多种技术,包括C语言编程、CAN协议和通信接口的理解和应用,硬件电路设计以及数据处理和分析等。开发人员需要了解CAN的基本概念和结构,如CAN帧格式、ID和数据传输方式等,以及CAN常用的协议标准,例如ISO 11898和SAE J1939等。 在实际的开发工作中,可以使用许多开发工具来帮助开发人员提高效率和准确性。例如,可以使用开发板和调试器来检查代码的正确性和运行效果,使用代码编辑器和编译器来编写和调试程序,并使用CAN分析器来监控CAN总线上的通信数据。 总之,开发CAN测试工具需要深入理解CAN协议和通信技术,并掌握多种开发工具的使用,才能确保开发出高效、准确、稳定的工具软件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wendy_ya

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

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

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

打赏作者

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

抵扣说明:

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

余额充值