代码单元测试工具:gmock
Mock,更确切地说应该是Mock Object。当我们在单元测试、模块的接口测试时,当这个模块需要依赖另外一个/几个类,而这时这些类还没有开发好,这时我们就可以定义Mock对象来模拟那些类的行为。
mock工具的其中一个非常重要的作用是指定函数的行为(模拟函数的行为)。可以对入参进行校验,对出参进行设定,还可以指定函数的返回值。
Google's framework for writing and using C++ mock classes on a variety of platforms (Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Inspired by jMock, EasyMock, and Hamcrest, and designed with C++'s specifics in mind, it can help you derive better designs of your system and write better tests.
Google Mock:
provides a declarative syntax for defining mocks,
can easily define partial (hybrid) mocks, which are a cross of real and mock objects,
handles functions of arbitrary types and overloaded functions,
comes with a rich set of matchers for validating function arguments,
uses an intuitive syntax for controlling the behavior of a mock,
does automatic verification of expectations (no record-and-replay needed),
allows arbitrary (partial) ordering constraints on function calls to be expressed,
lets a user extend it by defining new matchers and actions.
does not use exceptions, and
is easy to learn and use.
Google Mock is not a testing framework itself. Instead, it needs a testing framework for writing tests. Google Mock works seamlessly with Google Test, but you can also use it with any C++ testing framework.
参考:
https://blog.csdn.net/weixin_33807284/article/details/85093811
https://blog.csdn.net/niceniuniu/article/details/65629401
http://coney.github.io/2015/05/mock-static-function-with-mockcpp/
https://www.cnblogs.com/jycboy/p/gmock_summary.html
MockCpp手册(中文)
1. 代码 mock_test.cc
#include <gtest/gtest.h>
#include <gmock/gmock.h>using namespace testing;class A {
public:int set(int num) {value = num;return num;}int get() {return value;}int value;
};class MockA : public A {
public:MOCK_METHOD1(set, int(int num));MOCK_METHOD0(get, int());};TEST(Atest, getnum)
{MockA m_A;int a = 10;EXPECT_CALL(m_A, set(_)).WillRepeatedly(Return(a));int k = m_A.set(200);EXPECT_EQ(10, k);
}int main(int argc, char *argv[]) {::testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();
}
2. 编译
g++ mock_test.cc -lgtest -lgmock -lpthread -std=c++11
3. 测试执行
baoli@ubuntu:~/tools/gtest/mytest$ ./a.out
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from Atest
[ RUN ] Atest.getnum
[ OK ] Atest.getnum (0 ms)
[----------] 1 test from Atest (0 ms total)[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.
4. 说明
4.1 MOCK_METHOD
MOCK_METHOD1(set, int(int num)); //调用set方法,一个参数(int num),返回int型
MOCK_METHOD0(get, int()); //调用get方法,无参数,返回int型
4.2 EXPECT_CALL
This means EXPECT_CALL() should be read as expecting that a call will occur in the future, not
that a call has occurred. Why does Google Mock work like that? Well, specifying the expectation
beforehand allows Google Mock to report a violation as soon as it arises, when the context (stack
trace, etc) is still available. This makes debugging much easier
代码单元测试工具:gmock相关推荐
- Openstack_单元测试工具 tox
目录 目录 扩展阅读 Openstack 的单元测试工具 单元测试工具使用流程 tox toxini 参考文章 扩展阅读 Python Mock的入门 Openstack 的单元测试工具 unitte ...
- 在.NET开发中的单元测试工具之(1)——NUnit
NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...
- python 单元测试 工具_Django单元测试工具test client使用详解
The test client test client是一个python类,来模拟一个简单的"哑"浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情 ...
- SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- .NET 程序集单元测试工具 SmokeTest 应用指南
Smoke Test(冒烟测试),也称Regression Test(回归测试),是对软件的安装和基本功能的测试.一般地我们使用脚本来实现Smoke Test的自动化,可借用虚拟机的snapshot机 ...
- coverity代码检测工具介绍_微服务测试之静态代码扫描
静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...
- 常见单元测试工具介绍
1. C/C++语言开发的首选利器- C++Test 以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++开发的范畴. ...
- 代码质量管理工具】——sonar
原文地址:https://blog.csdn.net/luckystar689/article/details/53871821 ----------------------------------- ...
- 代码合并工具_11个代码质量审核和管理工具,程序员必备!
「 读者福利!2 TB 各类技术资源免费赠送 」 如今,代码质量分析和审核已成为每个企业的基本流程.随着开源代码库使用的增加,安全性和代码质量对于构建高质量软件至关重要.不良的代码不仅会影响代码的可维 ...
最新文章
- github组织存储库使用_为什么我不使用您的GitHub存储库
- 有限单元法基本原理和数值方法_SPH法介绍
- grafana+prometheus快速搭建MySql监控系统实践
- 通过options探测服务器信息,OPTIONS 方法在跨域请求(CORS)中的应用
- c 语言练习__去掉多余的空白字符_修正
- Hadoop HIVE 安装配置(单机集群)
- C++STL之next_permutation()函数使用
- Androidstudio设置Ctrl+W关闭当前编辑的页面窗口
- 蚂蚁警告:“‘includeantruntime‘未设置”
- python的格式化输入_如何在python中读取格式化的输入?
- cisco CEF的一点概述
- Scala对象 转Json字符串
- Linux tar打包命令详解
- QQ互联一直显示“未提交审核”
- 计算机工作原理--时钟概念
- 芯力特SIT1043Q完全替代恩智浦TJA1043
- 2200p如何连接wifi打印_柯尼卡美能达2200P打印机使用介绍
- js 转化为实体符_js字符实体 转义字符串
- 阿里Java代码规范
- 速卖通重点国家市场俄罗斯市场分析平台热销产品推荐
热门文章
- 为提高研发和测试质量而规范Scrum项目需求描述
- Ajax updatepanel用法
- Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)
- centos 7.6安装java_安装 QRadar Community Edition
- honeywell新风系统控制面板说明_新风系统——不开窗也能清新呼吸
- ThinkSNS 仿蘑菇街 社区购物分享系统
- java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
- Python实现八皇后问题所有实现方式
- java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc
- python基础教程--代码集合(下)