UnitTest Fake

什么是Fack

  • Fake Function Framework ,是一种实体的模拟。
  • Fake是一种虚假的实现,可以自定义返回的结果。
  • 简单理解的话,Fake用于C函数。用来模拟函数的返回值。
  • 个人理解,Mock用于C++(对象),Fack用于C(函数)

例子

  • 相关头文件,在fake库中提供,自行搜索下载吧。
  • myFake.h

#ifndef MYFACK_H
#define MYFACK_H#ifndef __cplusplus
#    error ERROR: This file requires C++ compilation (use a .cpp suffix)
#endif
#include <fff.h>
#include <fffext.h>#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>// 声明要Fake的函数为socket
// 返回值类型 int
// socket的三个参数,类型均为 int
DECLARE_FAKE_VALUE_FUNC3(int, socket, int, int, int);
// 声明要fake的三个函数
DECLARE_FAKE_VALUE_FUNC3(int, bind, int, const sockaddr*, socklen_t);
DECLARE_FAKE_VALUE_FUNC3(int, connect, int, const sockaddr*, socklen_t);
DECLARE_FAKE_VALUE_FUNC1(int, close, int);#endif
  • myFake.cpp
#include "myFake.h"DEFINE_FFF_GLOBALS;DEFINE_FAKE_VALUE_FUNC1(void*, malloc, size_t);
DEFINE_FAKE_VALUE_FUNC3(int, socket, int, int, int);
DEFINE_FAKE_VALUE_FUNC3(int, bind, int, const sockaddr*, socklen_t);
DEFINE_FAKE_VALUE_FUNC3(int, connect, int, const sockaddr*, socklen_t);
DEFINE_FAKE_VALUE_FUNC1(int, close, int);
  • 这里为用GoogleTest,做UT时使用。
// ... someCodeTEST_F(TestXXX, testSocket)
{// Fake 掉 socket,让其返回值为 -1   FUNC_FAKE_SINGRET_SET(socket, -1);// ..Some Code call socket// 恢复FUNC_FAKE_RESET1(socket);
}TEST_F(TestXXX, testBind)
{// Fake掉 socket,让其返回值为10   FUNC_FAKE_SINGRET_SET(socket, 10);// Fake掉 bind,让其返回值为-1FUNC_FAKE_SINGRET_SET(bind, -1);// ..Some Code call socket// 恢复FUNC_FAKE_RESET2(socket, bind);
}

【UT】UnitTest Fake相关推荐

  1. 【python】unittest框架

    [python]unit test框架 unittest组成 TestCase TestSuite & TestRunner 查看用例结果 TestLoader 测试夹具 方法级别 类级别 模 ...

  2. 【Python】unittest中执行用例通过但是报错:OSError: [WinError 6] 句柄无效。

    通过调试,发现原来是文本driver对象后面没有关闭浏览器,在后面加上一行driver.quit()就可以了 driver.quit()

  3. 【selenium2】【unittest】

    #栗子 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver ...

  4. python自动化测试-【自动化测试】Python - unittest单元测试框架

    一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复 ...

  5. 【NOIP2018】 游记

    All ended? [day 0] 一点感觉没有,不过翘掉了早上的课(当然还有前三周的课),然后刚想睡一会儿,就被通知要上车了/难受 在车上玩了一会儿早上下的Super Mario(主要是早上刷了一 ...

  6. 拉丁法谚讲习1-24 【ZZ】

    linked from http://www.childeye.com/english/viewthread.php?tid=619 拉丁法谚讲习1-24 作者:郑戈 拉丁法谚讲习1-24  作者:郑 ...

  7. 【调侃】IOC前世今生

    http://blog.jobbole.com/76510/ 前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故 ...

  8. [转]机器学习和深度学习资料汇总【01】

    本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learn ...

  9. 【Paper】2003_Consensus Problems in Networks of Agents with Switching Topology and Time-Delays

    此篇文章主要在于仿真代码,关于文献的解释请参考 [Paper]2003_Murr_Consensus Problems in Networks of Agents with Switching Top ...

最新文章

  1. “#ifdef __cplusplus extern C { #endif”的定义(zz)
  2. unity, List namespace
  3. uaredirect.js
  4. GDCM:gdcm::ImageWriter的测试程序
  5. [蓝桥杯2015决赛]分机号-枚举(水题)
  6. linux字符驱动向vxworks移植,VxWorks驱动移植至SylixOS总结
  7. 剑指offer面试题[57]-删除链表中重复的结点
  8. 【python练习题01】字符串格式化输出
  9. PT建站源码(PT服务器原程序)汇总 by 乱世狂人
  10. java 脚本怎么写_编写java的运行脚本
  11. 电脑怎么加快网页打开速度?加快网速。
  12. php 检测是否是微信浏览器,PHP判断设备是否为微信浏览器或QQ浏览器
  13. 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
  14. 极路由 mysql_用极路由3和移动硬盘DIY时间胶囊TimeCapsule做备份
  15. 【转】感觉像绕口令般的英语组句
  16. 网页前端监控系统(错误日志,接口监控)的使用
  17. 2015年8月25号申请入驻一点资讯自媒体平台
  18. 两部手机怎样才能把数据都传过来_新旧手机怎样互传数据?
  19. MacOS 上全速下载百度云资源方法
  20. python对象的生命周期_(python)通过一个代码例子来分析对象的生命周期 | 学步园...

热门文章

  1. Solr 4.10.4 使用
  2. 【第二轮征稿开启】ICRAIC 2021 机器人、自动化与智能控制国际会议诚邀您的参与!
  3. explan各项说明
  4. 快速实现地图迁移数据可视化
  5. Unity Shader自定义光照模型
  6. memset linux 头文件,linux中memset的正确用法
  7. 关于 “什么是互联网?” 的采访记录
  8. LintCode 310. 数字变形 JavaScript算法
  9. 写给六年前自己的一封信
  10. rtthread 以太网 (LAN8720A)