Cmockery学习
什么是cmockery?
是一个轻量级的C语言单元测试框架
什么是单元测试?
单元测试就是测试一个系统的最小实现单元,往往是函数
示例解析
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmockery.h>
//测add方法
void test_add(void **state) {
	assert_int_equal(add(3, 3), 6); //这个叫断言宏,简单地说就是通过assert这个函数判断括号内的,真就忽略继续,假就停
	assert_int_equal(add(3, -3), 0);
}
//测sub方法
void test_sub(void **state) {
	assert_int_equal(sub(3, 3), 0);
	assert_int_equal(sub(3, -3), 6);
}
int main(int argc, char *argv[])
{
    const UnitTest tests[] = { //这个是待测试的所有方法列表,每一个待测试的方法都要写一个test_xxx并用unit_test包裹
        unit_test(test_add),
		unit_test(test_sub),
    };
    return run_tests(tests); //所有的待测试方法列表(数组)传入run_tests函数,一起跑
}
- 不能显示断言成功的表达式,因为是基于assert()的
- cmokery会在一个进程中测试全部用例,所以当有用例失败导致内存问题时,后面的用例都没法测了,所以对malloc() 、 calloc() 和free() 的调用分别替换成test_malloc() 、test_calloc() 和 test_free()
单元测试最好能脱离原函数的环境
我现在有个函数是a,里面调用了b或者需要用到c数据库的数据,那么测试a就不要涉及bc,可以把调用bc的地方直接替换为相应数据
- Cmockery 提供了给模拟函数的每个测试用例存放返回值的功能,使用的是 will_return() 函数。然后,这些值将通过每个模拟函数调用mock() 返回 
- 传给will_return() 的值,将分别添加到每个函数所特有的队列中去。连续调用 mock() ,将从函数的队列中移除一个返回值。 
此外
- 还有expect_xxx检测参数,
- test_error等测试状态函数
Cmockery学习的更多相关文章
- 最值得学习的10个C语言开源项目
		最好别下载最新版,因为代码量比较大,可以下载很早的版本 搜索词:开源 C Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ... 
- 值得学习的C语言开源项目
		值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ... 
- 转: 最值得阅读学习的 10 个 C 语言开源项目代码
		from: http://www.iteye.com/news/29665 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同 ... 
- 转:最值得学习阅读的10个C语言开源项目代码
		阅读优秀代码是提高开发人员修为的一种捷径…… 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试 ... 
- 嵌入式 十个最值得阅读学习的C开源项目代码
		开源世界有许多优秀的开源项目,我选取其中十个最优秀的.最轻量级的C语言的项目,希望可以为C语言开发人员提供参考. 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd ... 
- 十个最值得阅读学习的C开源项目代码
		1. Webbench Webbench 是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以 模拟3万个并 ... 
- 推荐学习c语言的几个开源项目
		1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连 ... 
- 值得学习的C/C++开源框架(转)
		值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ... 
- 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
		原文出处: 平凡之路的博客 欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ... 
- C++的一些不错开源框架,可以学习和借鉴
		from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ... 
随机推荐
- Excel 分组后计算
			分组后的计算都类似,仍然采用 groups 函数,分组并同时计算出各洲的 GDP 总量,然后再求一遍各洲的 GDP 总量占全球 GDP 的百分比值. SPL 代码如下: A B 1 =clipbo ... 
- 重新整理数据结构与算法(c#)——算法套路普利姆算法[二十九]
			前言 看一个题目: 这个问题就是求最小生成树,是图转换为树的一种方式. 最小生成树概念: 最小生成树简称MST. 1.n个顶点,一定有n-1条边 2.包含全部顶点. 3.图转换为最小生成树,权重之和最 ... 
- 论文记载:FRAP:Learning Phase Competition for Traffic Signal Control
			ABSTRACT 一个为早晨的交通训练好的模型可能不适用于下午的交通,因为交通流可能被逆转,导致非常不同的状态表示.本文基于交通信号控制中相位冲突的直观原理,提出了一种新的设计方案FRAP:当两个交通 ... 
- 论文记载: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks
			强化学习论文记载 论文名: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks ( 车辆网络交通信号灯 ... 
- modbus通信案例简单介绍
			介绍: 1.仪表等其他智能设备的modbus通信协议,确定其内部功能码地址.以型号U-MIK-P350-SCN2的杭州美控公司的压力变送器为例.查看对应手册20页.2.PLC端的编程配置.以西门子s7 ... 
- 自己动手从0开始实现一个分布式RPC框架
			简介: 如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现.负载均衡.序列化协议.RPC通信协议.Socket通信.异步调用.熔断降级等技术,可以全方位的提升基本素质 ... 
- [Auth] 浅谈 jwt token 的妙处
			无状态(易扩展). 有过期时间限制,相对安全(可以有多个有效的 token). 更轻量(适合少量信息),类似传统 query string 签名方式. 标准统一(跨语言). Refer:JWT Aut ... 
- [Cloud] From Borg to Kubernetes
			Borg System Architect: Kubernetes System Architect: Link:https://www.cnblogs.com/farwish/p/12751861. ... 
- WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响
			本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 远古时候,不知道大佬是故意还是失 ... 
- 服务端向客户端发送消息Server-Sent Events
			今天听说了服务端向客户端发消息的一种方式:Server-Sent Events SSE使用的是HTTP协议,本质上是服务端向客户端发送流式数据. HTTP不支持服务端向客户端发送请求,但是如果客户端向 ... 
