【UT】UnitTest Fake
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相关推荐
- 【python】unittest框架
[python]unit test框架 unittest组成 TestCase TestSuite & TestRunner 查看用例结果 TestLoader 测试夹具 方法级别 类级别 模 ...
- 【Python】unittest中执行用例通过但是报错:OSError: [WinError 6] 句柄无效。
通过调试,发现原来是文本driver对象后面没有关闭浏览器,在后面加上一行driver.quit()就可以了 driver.quit()
- 【selenium2】【unittest】
#栗子 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver ...
- python自动化测试-【自动化测试】Python - unittest单元测试框架
一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复 ...
- 【NOIP2018】 游记
All ended? [day 0] 一点感觉没有,不过翘掉了早上的课(当然还有前三周的课),然后刚想睡一会儿,就被通知要上车了/难受 在车上玩了一会儿早上下的Super Mario(主要是早上刷了一 ...
- 拉丁法谚讲习1-24 【ZZ】
linked from http://www.childeye.com/english/viewthread.php?tid=619 拉丁法谚讲习1-24 作者:郑戈 拉丁法谚讲习1-24 作者:郑 ...
- 【调侃】IOC前世今生
http://blog.jobbole.com/76510/ 前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故 ...
- [转]机器学习和深度学习资料汇总【01】
本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learn ...
- 【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 ...
最新文章
- “#ifdef __cplusplus extern C { #endif”的定义(zz)
- unity, List namespace
- uaredirect.js
- GDCM:gdcm::ImageWriter的测试程序
- [蓝桥杯2015决赛]分机号-枚举(水题)
- linux字符驱动向vxworks移植,VxWorks驱动移植至SylixOS总结
- 剑指offer面试题[57]-删除链表中重复的结点
- 【python练习题01】字符串格式化输出
- PT建站源码(PT服务器原程序)汇总 by 乱世狂人
- java 脚本怎么写_编写java的运行脚本
- 电脑怎么加快网页打开速度?加快网速。
- php 检测是否是微信浏览器,PHP判断设备是否为微信浏览器或QQ浏览器
- 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
- 极路由 mysql_用极路由3和移动硬盘DIY时间胶囊TimeCapsule做备份
- 【转】感觉像绕口令般的英语组句
- 网页前端监控系统(错误日志,接口监控)的使用
- 2015年8月25号申请入驻一点资讯自媒体平台
- 两部手机怎样才能把数据都传过来_新旧手机怎样互传数据?
- MacOS 上全速下载百度云资源方法
- python对象的生命周期_(python)通过一个代码例子来分析对象的生命周期 | 学步园...