`

最简单的C语言单元测试框架

阅读更多

资料来自Internet。最简单的C语言单元测试框架,只有一个3行的头文件。如下:

 

$ cat test/mini_test.h

#define mini_assert(message, test) do { if (!(test)) return message; } while (0)

#define mini_test(test) do { char *message = test(); tests_run++; if (message) return message; } while (0)

extern int tests_run;

 

使用方法:

$ cat test/test_all.c

 

#include <stdio.h>  /*For printf*/

#include "mini_test.h"

 

int tests_run =0;

static char *test1() {

    mini_assert("must be true", 1==1);

    return 0;

}

static char *all_tests() {

    mini_test(test1);

    return 0;

}

 

int main(int argc, char **argv) {

    char *result = all_tests();

    if (result != 0) {

        printf("%s\n", result);

    } else {

        printf("ALL TESTS PASSED\n");

    }

    printf("Tests run: %d\n", tests_run);

    return result != 0;

}


由于该测试框架十分简单,所以可以很容易用于嵌入式系统开发,如MTK的C语言开发。

分享到:
评论

相关推荐

    Linux 通用 WebAdmin (webui) 开发框架-C语言 源码

    WebAdmin是一个用C语言设计的易用的图形用户接口开发框架,C语言的高可移植性使得WebAdmin可以广泛应用于包括Linux、Unix、Windows及各种嵌入式操作系统中,编译WebAdmin系统除Libxml2库处不需要额外的C函数库支持...

    c语言编写单片机技巧

    要实现单片机与电脑的连接,最简单的方式就是采用串口通讯,但需要加一颗RS-232芯片。 17. 在ARM编程中又应当如何? 答:就以嵌入式系统观念为例,一般嵌入式处理器可以分为三类:嵌入式微处理器、嵌入式微...

    glib-2.0-demo.zip

    数组、指针数组、双端队列、哈希表、平衡二叉树、N维树、泛型、主循环、多线程、线程池、异步队列、内存分配、内存片段、错误系统、测试框架等等一系列功能,称得上是C语言开发人员的军刀,值得研究。

    C语言数据结构课程设计报告库存管理系统.doc

    第二章 系统分析与设计 2.1设计分析 2.1.1设计理念 家电库存系统以最简单操作界面,最少的内存使用和最高的效率为原则,带 给用户带来清爽的体验。进入主菜单,选择相应的功能即可进入相应的操作,操作完毕 有相应...

    matlab最简单的代码-AutoLab:本科毕业设计

    matlab最简单的代码 AutoLab 本科毕业设计——基于MATLAB的自控实验仿真实验 主要登陆计算机:2号楼 这个版本库主要用来记录我的C语言驱动代码 驱动由四部分构成: 1、AD模块:最为复杂,输入为16路 2、DA模块:输出...

    “ 官网 ”最新版-《qt-unified-windows-x64-4.5.1-online》

    Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。 Qt...

    单层感知器神经网络matlab代码-Linux-Labs:学

    单层感知器神经网络matlab代码 Linux-Lab 值得学习的C语言开源项目 Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。...cmockery是google发布的用于C单元测试的一个轻量级的框架。它

    一个简单易用的库,可以享受视频游戏编程raylib-installer-v4.5.mingw.64bit.zip

    raylib支持多个目标平台,它已经在以下平台上进行了测试,但从技术上讲,任何支持C语言和OpenGL图形的平台对raylib都有效,或者可以很容易地移植到。Raylib 可以与几个额外的库结合使用以获得额外的功能,其中一些库...

    matlab源码求一元函数-Docs:文件

    matlab源码求一元函数 Docs 值得推荐的C/C++框架和库 转自网络, 感谢平凡之路和fffaraz 的整理,转载请注明出处。 下次造轮子前先看看现有...其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进

    基于记录的应用程序设计

    我们同样也需要用某种方式表示问题的结束,对程序员和课程编写者来讲,最简单的方法是定义一个标记值,在这个程序中,可以选定用五个 “-”来表示文件结束。另外,程序同样需要允许课程设计者指明答案/下一个问题的...

    matlab的egde源代码-epanet-matlab:用于各种EPANET应用程序(包括MSX)的Matlab包装器和脚本

    以下文件必须位于搜索路径中:%(最简单的方法是将它们复制到工作目录中) epanet2.dll epanet2.h epanetmsx.dll epanetmsx.h 还应该添加到路径中的是所包含目录的位置: EPANET工具包Matlab包装器 MSX Matlab包装...

    基于记录应用程序设计

    我们同样也需要用某种方式表示问题的结束,对程序员和课程编写者来讲,最简单的方法是定义一个标记值,在这个程序中,可以选定用五个 “-”来表示文件结束。另外,程序同样需要允许课程设计者指明答案/下一个问题的...

    开发PHP扩展详细教程

    2. 执行phpize生成扩展的框架 3. 在生成的php_xxx.h中声明自己写的函数 4. 在xxx.c中实现自己的函数 5. 编译自己的扩展 6. 将生成的xxx.so拷贝到php.ini中指定的extensions_dir 7. 在php.ini中打开...

    ROS机器人操作系统入门 Tutorials CN版 20150726

    测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。 扩展性:ROS适合于大型实时系统与大型的系统开发项目。 ROS的概念 ROS有三个层次的概念:分别为Filesystem ...

    初级java笔试题-awesome-stars:我自己的很棒的清单!

    初级java笔试题真棒明星 我的 GitHub 星星的精选列表! 生成者 内容 阿帕奇会议 - Aplicación ...一个简单的 ...将框架数据从 ...几家咨询公司和学术安全组织发布的公共渗透测试报告的精选清单 ...跨平台库支持C语言

    java课程设计心得体会.docx

    详细设计的结果是对数据结构的基本操作的规格说明做出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c语言写出函数形式的算法框架。 通过这次课程设计,使我灵活应用所学数据结构知识,独立完成...

    ARM Cortex-A8和Android 4.x联动报警系统

    第一部分课程从最基础的Android应用开发环境搭建开始,简单讲解了Android界面及事件处理之后,深入剖析Android Handler多线程机制,重点讲解Android NDK应用层与驱动的通信; 第二部分内容,先简单讲解Android系统...

    精通正则表达式~~~

    正则表达式的知识框架... 6 对于有部分经验的读者... 6 检索文本文件:Egrep. 6 Egrep元字符... 8 行的起始和结束... 8 字符组... 9 用点号匹配任意字符... 11 多选结构... 13 忽略大小写... 14 单词分界...

    计算机网络专业毕业实习报告3000字.docx

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 计算机网络...

Global site tag (gtag.js) - Google Analytics