当前位置: 首页 > news >正文

Google Test(gtest)中 Mocks

在 Google Test(gtest)中,mockins 和 mocks 实际上并不是标准术语。通常,我们使用 mocks 来指代模拟对象(mock objects),而 mockins 可能是某种拼写错误或误解。

Mocks

Mocks 是指模拟对象,它们实现了与真实对象相同的接口,但允许你在运行时指定它们的行为和期望。使用模拟对象的主要目的是在测试中替换真实对象,以便控制和验证代码的行为。Google Mock(gMock)是一个用于创建和使用模拟对象的库。

使用 gMock 创建模拟对象

在 gMock 中,我们使用 MOCK_METHOD 宏来定义模拟方法,并使用 EXPECT_CALL 宏来设置期望。以下是一个简单的示例:

#include "gmock/gmock.h"
#include <gtest/gtest.h>class MyInterface {
public:virtual ~MyInterface() = default;virtual int DoSomething(int value) = 0;
};class MockMyInterface : public MyInterface {
public:MOCK_METHOD(int, DoSomething, (int value), (override));
};TEST(MyTest, Example) {MockMyInterface mock;EXPECT_CALL(mock, DoSomething(42)).Times(1).WillOnce(testing::Return(100));EXPECT_EQ(mock.DoSomething(42), 100);
}

 在这个示例中:

  • MockMyInterface 类继承自 MyInterface 并使用 MOCK_METHOD 宏定义了一个模拟方法 DoSomething
  • 在测试中,我们使用 EXPECT_CALL 宏设置了对 DoSomething 方法的期望,指定它被调用一次并返回 100。

期望设置

  • .Times(cardinality):指定方法被调用的次数。
  • .WillOnce(action):指定方法在第一次调用时执行的动作。
  • .WillRepeatedly(action):指定方法在后续调用时执行的动作。

总结

在 gTest 中,mocks 是指模拟对象,用于在测试中替换真实对象并控制其行为。

gMock for Dummies | GoogleTest 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis重要知识点:哨兵是什么?哨兵如何选择Redis主服务器
  • Java-idea小锤子图标
  • Excel数据清洗工具:提高数据处理效率的利器
  • 好事多磨,长电科技2024上半年营收净利为何逆势双大涨
  • Python Opencv鼠标回调
  • error C2275: 将此类型用作表达式非法-解决方案
  • ubuntu 安装配置 ollama ,添加open-webui
  • C#LINQ常用扩展语句
  • 半天玩转大模型技术之RAG
  • cache miss问题C++示例
  • visio修改默认字体、颜色、形状格式、连接线格式
  • 苍穹外卖学习笔记(二)
  • 软考系统分析师难吗?现在开始准备需要多久能考试?
  • C语言-第九章-加餐:文件位置指示器与二进制读写
  • 桂林自闭症寄宿学校:用关爱点亮未来
  • ES10 特性的完整指南
  • Java编程基础24——递归练习
  • JS 面试题总结
  • Laravel Telescope:优雅的应用调试工具
  • vue 配置sass、scss全局变量
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 大主子表关联的性能优化方法
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 区块链共识机制优缺点对比都是什么
  • 一道面试题引发的“血案”
  • ​iOS安全加固方法及实现
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(7)简单事件(Simple events)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (web自动化测试+python)1
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net Core中Quartz的使用方法
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET程序员迈向卓越的必由之路
  • @media screen 针对不同移动设备
  • @ModelAttribute 注解
  • [100天算法】-不同路径 III(day 73)
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [4.9福建四校联考]
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [ANT] 项目中应用ANT
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [I2C]I2C通信协议详解(一) --- 什么是I2C
  • [IE 技巧] 显示/隐藏IE 的菜单/工具栏
  • [JS]认识feach
  • [Leetcode 51][Hard]-n皇后问题-回溯
  • [LeetCode]Multiply Strings