GMock学习笔记
1. Mock与Fake
1.1. fakes(伪对象)和mock(模拟器)在测试驱动开发(TDD)社区中实际上往往意味着非常不同的东西:
- Fake有工作实现,但通常采取一些捷径(可能使操作更简单),这使得它们不适合生产。内存中的文件系统是一个fake的例子。
- Mock是预期编程的对象,它们形成它们期望接收的调用的规范。
1.2. 使用Google Mock涉及三个基本步骤:
使用一些简单的宏描述你想要模拟的接口,他们将扩展到你的mock类的实现;
创建一些模拟对象,并使用直观的语法指定其期望和行为;
练习使用模拟对象的代码。 Google Mock会在出现任何违反期望的情况时立即处理。
在代码中有依赖,比如代码依赖ABC.cpp文件里的方法。这些方法还没有实现,这是应该是拿到了这些包含了这些方法的定义的头文件,ABC.h。
创建一个Fake程序,Fake_ABC.cpp和Fake_ABC.h. 在Fake_ABC.h里include ABC.h. 并定义新的行为Fake_action_1(), Fack_action_2(). 这些行为多数是用来帮助获取Fake object的状态。
实现ABC.h里定义的行为,和Fake_ABC.h定义的额外增加的辅助测试的行为
构建TDD 测试case,写production code
1.3. Mock
Dummy
对象被四处传递,但是从不被真正使用。通常他们只是用来填充参数列表。Fake
有实际可工作的实现,但是通常有一些缺点导致不适合用于产品(基于内存的数据库就是一个好例子)。Stub
在测试过程中产生的调用提供预备好的应答,通常不应答计划之外的任何事。stubs可能记录关于调用的信息,比如邮件网关的stub 会记录它发送的消息,或者可能仅仅是发送了多少信息。Mock
预先计划好的对象,带有各种期待,他们组成了一个关于他们期待接受的调用的详细说明。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 因受!
评论