关于c++测试中mock及gmock的理解

西瓜的忧伤 2018-01-09 10:45:42
最近在用gtest和gmock做测试,其实就是补一些测试代码。感觉对gmock的理解不深,不知道对错,来这里请假各位大神。
mock一直是对未完成开发的模块,或者设计各类耗时操作的接口进行mock等等,anyway,重点是我的需求。

我在测sdk,但是涉及到与server的通信,其实我是想要一个模拟的server,每次在request的时候,根据请求内容来快速返回结果。但是我发现gmock似乎干不了这个。比如说,我的sdk会最终调用一个SDKRequest类发起网络请求,那么我其实想mock SDKRequest这个类,当我的其他类调用SDKRequest的方法时,会切换到调用MockSDKRequest类的相应方法,但是好像用gmock实现不了,我需要用其他的方式来实现这个需求。

不知道是不是我对gmock的理解有问题,还是用法有问题

...全文
1635 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtl_csdn 2019-01-11
  • 打赏
  • 举报
回复
gmock仅仅是提供了一个方便的mock工具,通过gmock可以创建一个真实类的子类,至于如何将真实类的实例替换成mock类的实例,由于真正的实例的使用情况多种多样,并没有统一的方法。gmock的好处是他可以使用指定mock类的函数调用的情况(使用ON_CALL),并且可以在执行测试用例时,检测mock类中函数的使用情况(EXPECT_CALL).
西瓜的忧伤 2018-01-10
  • 打赏
  • 举报
回复
详细说下吧。 假设有 class MockTestClassA : public TestClassA 定义 很明显,MockTestClassA 是 TestClassA 的mock类。这里对TestClassA 有要求,就是析构函数和需要mock的函数必须声明为virtual gmock做的就是定义MockTestClassA 的行为,那么回到我的问题。 我想mock一个server,然后每次调用SDKRequest接口进行request的时候,此时调用我mock的server来返回。这种需求其实gmock是做不到的,或者最起码这部分功能不是gmock做的。这里用到多态的特性,需要在测试的时候TestClassA *pcls = new MockTestClassA (),然后把pcls 指针传入要调用的类中。所以这部分工作要自己实现,这也是我之前的疑问。 我比较懒,可能没说清楚,如果谁对此有兴趣,可以私信我。
赵4老师 2018-01-09
  • 打赏
  • 举报
回复
我不生产答案,我只是百度能搜到的答案的搬运工。
西瓜的忧伤 2018-01-09
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
百度搜相关关键字。
我既然在这里提问,肯定是在网上找过相关的资料,我并不是不做任何准备在这里等现成的。 所以在这里烦请赵4老师可以给一些具体的答案或者思路,这样会更有帮助,谢谢
赵4老师 2018-01-09
  • 打赏
  • 举报
回复
百度搜相关关键字。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧