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

广东做网站策划锦州网站seo

广东做网站策划,锦州网站seo,家乡网页设计模板,浙江交工宏途交通建设有限公司网站6文章目录 gmock vs mockcpp1 基本介绍2 语法风格与使用方式gmock 特点(基于接口 Mock):mockcpp 特点(基于重写/拦截原函数): 3 对比总结4 实际使用建议 gmock vs mockcpp gmock 和 mockcpp 是 C 中常用的两…

文章目录

  • gmock vs mockcpp
    • 1 基本介绍
    • 2 语法风格与使用方式
      • gmock 特点(基于接口 Mock):
      • mockcpp 特点(基于重写/拦截原函数):
    • 3 对比总结
    • 4 实际使用建议

gmock vs mockcpp

gmockmockcpp 是 C++ 中常用的两个 Mock 框架,用于单元测试时模拟对象或函数的行为。

它们的核心目标相似:使测试更加隔离、可控与可验证,但两者在设计理念、使用方式、语法风格、兼容性等方面存在明显差异。


1 基本介绍

项目gmock(Google Mock)mockcpp
作者Google东南大学(何海涛等)
语言C++(与 gtest 紧密集成)C++
发布时间2008 年左右2006 年左右
依赖Google Test (gtest)无需 gtest,可与其它测试框架搭配

2 语法风格与使用方式

gmock 特点(基于接口 Mock):

  • 基于接口/抽象类设计(需要提前设计好虚函数接口)
  • 使用宏定义 MOCK_METHOD() 快速生成 Mock 函数
  • 测试语句直观如:EXPECT_CALL(mockObj, Foo()).Times(1);
  • 支持匹配器(_, Eq(x), AnyOf, AllOf 等)
  • 语法现代、类型安全,支持 C++11+
class ICalc {
public:virtual int Add(int a, int b) = 0;virtual ~ICalc() = default;
};class MockCalc : public ICalc {
public:MOCK_METHOD(int, Add, (int a, int b), (override));
};TEST(MyTest, Addition) {MockCalc calc;EXPECT_CALL(calc, Add(1, 2)).WillOnce(Return(3));ASSERT_EQ(calc.Add(1, 2), 3);
}

mockcpp 特点(基于重写/拦截原函数):

  • 不依赖接口或虚函数,可以对 非虚函数/全局函数/静态函数 进行 Mock
  • 使用 MOCKER(methodName).stubs().will(returnValue()); 风格
  • 内部使用函数地址重写、hook 技术等实现原函数替换
  • 支持打桩(Stub)与调用验证
  • 适合 legacy code(老代码)测试,不易侵入原设计
class Calc {
public:int Add(int a, int b) { return a + b; }
};TEST_F(MyTest, AddMock) {MOCK_METHOD(Calc, Add).stubs().will(returnValue(42));Calc calc;ASSERT_EQ(calc.Add(1, 2), 42);
}

3 对比总结

特性gmockmockcpp
Mock 方式基于虚函数接口函数地址拦截,可 Mock 普通函数
对老代码支持差,需重构为虚接口强,无需修改原代码
语法风格现代,强类型安全,表达式链式调用类似脚本语言的 DSL,易用但类型不安全
调用验证支持 EXPECT_CALL支持 .expects().with(...)
可测试对象虚函数、成员函数所有函数(包括静态函数、全局函数)
依赖关系依赖 gtest独立,兼容多种测试框架
编译兼容性高度依赖编译器特性,现代 GCC/Clang 更好支持低层 hook,有些编译器和系统下不稳定
适合应用新代码、接口良好的模块老代码、未封装接口的遗留项目

4 实际使用建议

  • 如果你在做现代 C++ 项目(C++11+)并使用 gtest 作为测试框架,推荐使用 gmock,配合 gtest 效果更佳;
  • 如果你在维护遗留项目、无法改写为虚函数接口,或者需要对 静态函数、全局函数、第三方库函数进行打桩,推荐使用 mockcpp;
  • 也可以在一个项目中同时使用 gmock 和 mockcpp,根据不同的模块情况选择合适的 Mock 方式。
http://www.ds6.com.cn/news/81321.html

相关文章:

  • 阿里云网站建设好了怎么青岛seo优化
  • 网站开发功能脑图seo+网站排名
  • 临沂网站建设电话目前疫情最新情况
  • 温州做网站的公司有哪些360免费建站
  • 邹平做网站网络营销的优势有哪些
  • 昌乐网站建设搜索引擎站长平台
  • 东莞做网站多少钱网络建站工作室
  • php旅游网站开发背景游戏推广合作平台
  • 做网站的服务器很卡怎么办网站关键词排名优化方法
  • 合肥网站制作公司有哪些公司天津网站建设公司
  • 小贷网站需要多少钱可以做seo标题优化导师咨询
  • icp备案 网站负责人新闻投稿平台
  • 软件开发工程师的发展前景seo广告投放是什么意思
  • 初中生怎么做网站百度售后服务电话人工
  • 网站上传文件大小限制福鼎网站优化公司
  • 和政网站建设百度信息流广告推广
  • 猪八戒网站做私活赚钱吗营销技巧有哪些
  • 网站业务费如何做记账凭证海外发布新闻
  • 网站建设app是什么嵌入式培训班一般多少钱
  • 郑州汉狮做网站网络公司查域名注册详细信息查询
  • 网站做阿拉伯语的seo教学网seo
  • 济南手机网站建设公司排名进入百度app
  • 智能魔方网站备案查询站长工具
  • 网站优化企业排名百度新闻官网首页
  • 为什么做网站费用贵高质量外链平台
  • 中国农业建设网站百度网站登录入口
  • 网站建设cms互联网下的网络营销
  • 芜湖做网站公司推广标题怎么写
  • 北京营销型网站开发网站软文推广范文
  • 网站地址和网页地址区别微信营销软件