就在昨天终于做了gtest的分享,我的预研工作终于结束了,感觉离我辞职的日子不远了,毕竟是专注java二百年啊,要告别实习啦。。
这篇是GoogleMock的简介文档,会在后边附带一个自己的例子。
一、什么是Google C ++ Mocking Framework?
当你写一个原型或测试,往往不能完全的依赖真实对象。一个mock对象实现与一个真实对象相同的接口,但让你在运行时指定它时,如何使用?它应该做什么?(哪些方法将被称为?什么顺序?多少次?有什么参数?他们会返回什么?等)
注意:很容易混淆伪造对象和模拟对象。fakes和mock在测试驱动开发(TDD)社区中实际上意味着非常不同的东西:
Fake(伪对象)有工作实现,但通常采取一些捷径(可能使操作更便宜),这使得它们不适合生产。内存中的文件系统将是一个fake的例子。
Mock(模拟器)是预期编程的对象,它们形成它们期望接收的调用的规范。
如果所有这些对你来说太抽象了,不要担心 - 最重要的事情要记住是一个模拟允许你检查它自己和调用者之间的交互。一旦你开始使用mock,fake和mock之间的差异将变得更加清晰。
Google C ++ Mocking框架(或简称为Google Mock)是一个库(有时我们称之为“框架”,以使其声音很酷)用于创建模拟类和使用它们。 它之对于对C ++,就像jMock和EasyMock对于Java。
使用Google Mock涉及三个基本步骤:
使用一些简单的宏描述你想要模拟的接口,他们将扩展到你的mock类的实现;
创建一些模拟对象,并使用直观的语法指定其期望和行为;
练习使用模拟对象的代码。 Google Mock会在出现任何违反期望的情况时立即处理。
二、为什么选择Google Mock?
虽然模拟对象可以帮助你删除测试中不必要的依赖,并使它们快速可靠,在C ++中手动使用mock是很难的:
有人必须实现Mock。这个工作通常很乏味,容易出错。难怪人们走很远的距离,避免它。
这些手动写的Mock的质量有点,呃,不可预测。你可能会看到一些真正抛光的,但你也可能看到一些被匆忙的入侵,并有各种各样的临时限制。
<