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

这篇具有很好参考价值的文章主要介绍了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解决方案。
C++开发测试工具gmock的安装与使用超详解

3.2 进行相应设置

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

3.3 目标程序的配置

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

设置lib文件的库目录(将.lib文件放在一个单独的文件夹中)如下图所示。
C++开发测试工具gmock的安装与使用超详解
将lib文件填入附加依赖项:
右键——>属性——>链接器——>输入——>附加依赖项——>加入gmock.lib,如下图所示。
C++开发测试工具gmock的安装与使用超详解

四、测试 Demo

编写代码之前,首先需要将解决方案的平台与目标程序一致,这里选择的是x64,然后版本也要与目标程序一致,这里选择的是release版本。
C++开发测试工具gmock的安装与使用超详解
新建一个头文件,命名为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字符的特性)。

运行结果:
C++开发测试工具gmock的安装与使用超详解

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

五、常见问题

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

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

C++开发测试工具gmock的安装与使用超详解
错误原因:在release下,工程设置中运行库中设置成了"多线程调试 DLL (/MD)"。这个是设置应该是在debug下的设置,release下应该设置“多线程 DLL (/MT)”,如下图所示:

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

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


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

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


参考:文章来源地址https://www.toymoban.com/news/detail-461097.html

  1. https://blog.csdn.net/gubenpeiyuan/article/details/50678697
  2. https://www.cnblogs.com/arxive/p/11220854.html

到了这里,关于C++开发测试工具gmock的安装与使用超详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 接口测试工具——Postman使用详解

    目录 Postman简介 Postman主界面 菜单栏 工具栏 请求管理区 环境管理区 请求设计区 发送请求 发送GET请求 Postman发送GET请求 发送表单格式POST请求 发送JSON格式POST请求 发送XML格式POST请求 发送文件上传类型的请求 响应 环境和变量 环境变量设置 环境变量使用 全局变量 测试脚本及

    2024年02月08日
    浏览(54)
  • Python测试工具-Pytest使用详解

    Pytest是一个全功能Python测试工具,支持第三方扩展插件,能够使用其开展单元测试和复杂功能测试。可以和selenium、requests、appium等模块结合使用实现WEB UI、API、APP自动化测试。 详见参考指南文档:https://docs.pytest.org/en/7.1.x/# PDF文档 : https://media.readthedocs.org/pdf/pytest/latest/pyt

    2024年02月02日
    浏览(35)
  • 开发工具-网络测试工具 POSTMAN 的脚本使用

    POSTMAN 是网络编程中最常用的接口测试工具之一,能够使用脚本进行连续的自动测试。这里是以本地应用版为基础环境。 参考资料: Postman接口自动化测试 postman 可以在发送请求前使用脚本进行预处理,收到响应后使用脚本进行测试。 脚本的一些测试过程可以使用类似浏览器

    2024年02月13日
    浏览(44)
  • Onvif协议及协议测试工具使用详解

    目录 ​1、Onvif协议的发展 2、Onvif协议概述及优势 2.1    协议概述 2.2、规范优势

    2024年01月15日
    浏览(33)
  • 接口自动化测试工具,Postman使用详解

    1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护,官方也不推荐使用该版本。 2、官网下载地址:http://www.getpostman.com 3:官方文档:http://www.getpostman.com/docs 2、第二步:新建接口请

    2024年02月06日
    浏览(65)
  • 性能测试工具 ab(Apache Bench)使用详解

    Apache Bench (ab) 是一个由 Apache 提供的非常流行的、简单的性能测试工具,用于对 HTTP 服务器进行压力测试。下面是 ab 工具的一些基本使用方法。 安装 在大多数 Unix 系统中,ab 通常作为 Apache HTTP 服务器的一部分预装在系统中。你可以通过在终端中运行 ab -V 来检查 ab 的版本,

    2024年04月11日
    浏览(32)
  • iOS 开发之使用苹果测试工具 TestFlight (进行内部和外部测试)

    一、测试工具介绍: 1、TestFlight是苹果公司在iOS8,Xcode6推出来的新工具,用于将App beta版本进行流水化测试。TestFlight整合进了Appstore Connect,你可以通过电子邮件来邀请你的Beta测试成员,并且允许用户在app上架前做一个上架前的beta版测试。 二、内部测试操作步骤: 1、使用手

    2024年02月13日
    浏览(34)
  • 压力测试工具Jmeter安装及使用

    Jmeter 依赖于 JDK ,所以必须确保当前计算机上已经安装了 JDK ,并且配置了环境变量。 1.1.下载 可以 Apache Jmeter 官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi 1.2.解压 因为下载的是 zip 包,解压缩即可使用,目录结构如下: 其中的 bin 目录就是执行的脚本,其中包含启动

    2024年02月02日
    浏览(65)
  • Rust桌面应用开发工具-----Tauri(Yew UI 模版)安装与测试

    最近在学习rust,想要了解一下关于rust在桌面应用开发方面的工具。。。 已经安装好了Rust ,我的测试环境是在 macos 系统进行的。其他系统注意阅读官方的操作文档。 MacOs系统环境准备 关于C的开发依赖 更新一下rust 运行之后会有如下的一些提示 根据提示运行测试一下 有个报

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包