当前位置: 首页 > 工具软件 > FAKE > 使用案例 >

mock和fake的区别

吕鸿轩
2023-12-01









fake:说话,讲真话;


mock: adj. 模拟的; 仿制的; 虚假的; 不诚实的;


今天看到一位大牛的测试框架中提到fake,特查阅了一下。


mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果。fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果。

fack是一种实体的模拟,而mock是对逻辑的模拟。


如何写Fake的方法:
1,在代码中有依赖,比如代码依赖ABC.cpp文件里的方法。这些方法还没有实现,这是应该是拿到了这些包含了这些方法的定义的头文件,ABC.h。 
2, 创建一个Fake程序,Fake_ABC.cpp和Fake_ABC.h.  在Fake_ABC.h里include ABC.h. 并定义新的行为Fake_action_1(), Fack_action_2(). 这些行为多数是用来帮助获取Fake object的状态。
3,   实现ABC.h里定义的行为,和Fake_ABC.h定义的额外增加的辅助测试的行为
4,构建TDD 测试case,写production code


Fake更像是Stub,是对被Fake,Stub的对象做简单的返回值处理。多少情况是程序的依赖程序不ready。而Mock是为了验证依赖对象和被测程序的交互。需要花更多的功夫去实现。有时候被Mock对象是硬件依赖的,被Mock对象的实现是存在的,只是不能放入off-target测试环境里。这时候就需要对该对象进行Mock。和上述方法一样,只是需要保证被Mock对象的实现.c,.cpp文件不能在测试项目里面。否则Mock的函数实现和真实代码的函数实现就会重复导致编译链接错误。

 类似资料: