C语言单元测试工具check
C语言单元测试工具check
- 实例
关于check的概念性描述,我在这里就不多少了,主要就是分享一下我在学习使用了check后的一些问题。
- 安装完check(我是在github上下载的源码安装的),在你的 /usr/local/ 目录下会有check的头文件(check.h)静态库文件,动态库文件等相关文件。
- 在使用check的时候就可以用check.h头文件了,和生成的库文件了。
- 使用的时候就是这样的结果。
实例
这个就是整个实例的目录
test------生成的可执行文件
readme--------自己写的说明性文件,方便以后看
add目录下-------两个被测试函数
include目录 -------头文件
unit_test/test_fun.c -----自己写的测试文件,用来测试被测试的函数是否‘正确’
unit_test/test_main.c-----主要就是main函数,调用test_fun.c 中的函数,生成test文件。
add1.文件
#include <stdio.h>int add(int a, int b)//求两个数的和
{return a + b + 1;//故意写错函数,为了测试
}
sub1.文件
因为这个文件没有用到stdio.o下的函数所以没加头文件,上一个也没用到。。
int sub(int a, int b)
{return a - b + 1;
}
add.h文件
#ifndef ADD_H
#define ADD_Hint add(int a, int b);#endif
sub.h文件
#ifndef SUB_H
#define SUB_Hint sub(int a, int b);#endif
unit_test.h文件
#include "check.h"#ifndef UNIT_TEST_H
#define UNIT_TEST_HSuite *make_unit_suite(void); //这个函数在头文件check.h中声明#endif
test_fun.c文件
下面的那些函数都是在check.h中声明的,你可以在/usr/local/include/check.h中查看。(你下载的源码解压之后里面也是有的)。建议看。
#include "check.h"#include "../include/add.h"
#include "../include/sub.h" //头文件相对路径START_TEST(aaa)
{fail_unless(add(1, 4) == 5, "error, add(1, 4) != 5over");//如果add(1, 4) == 5的话,就成功,否则输出后面的字符串。
}
END_TESTSTART_TEST(bbb)
{fail_unless(sub(4, 2) == 2, "error, sub(4, 2) != 2over");
}
END_TESTSuite *make_unit_suite(void)
{Suite *s = suite_create("bao1"); //创建一个名为bao1的 SuiteTCase *tc_bao = tcase_create("bao2"); //创建一个名为bao2的a test case(Tcase)suite_add_tcase(s, tc_bao); //将a test case添加到Tcase(bao1)中tcase_add_test(tc_bao, aaa); //将a test funtion (aaa) 添加到 a test case(bao2)中tcase_add_test(tc_bao, bbb);return s; //返回一个Suite的地址。
}
test_fun.c文件
SRunner------也就是 a suite runner
这里大体上就是main 函数调用你在test_fun.c文件中的函数然后运行。
#include <stdio.h>
#include <stdlib.h>#include "../include/unit_test.h"int main(int argc, const char *argv[])
{int n = 0;SRunner *sr = NULL;sr = srunner_create(make_unit_suite());srunner_run_all(sr, CK_NORMAL);n = srunner_ntests_failed(sr);srunner_free(sr);return (n == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
makefile文件
这个个文件,建议不要复制,我就是复制网上的然后就是报错,
错因就是tab键, 运行命令前面必须只有一个tab键。
vpath %.h include
vpath %.c add
vpath %.c unit_testobjects = add1.o sub1.o test_fun.o
test:test_main.c $(objects)gcc -Iinclude $^ -o $@ -lcheckall:$(objects)
$(objects): %.o : %.cgcc -c -Iinclude $< -o $@.PHONY:clean
clean:rm *.o
readme 文件
欢迎关注公众号:
C语言单元测试工具check相关推荐
- c语言的自动测试工具,C语言单元测试框架--check工具
C语言单元测试框架--check工具 虽然在UNIX上用C语言做开发已经有一段时间了,但是我不得不承认,自己单元测试做的并不好.恰好最近有新的开发任务,就学习了一些关于测试驱动开发的知识,准备改进自己 ...
- c语言 单元测试工具 免费下载,雨田单元测试系统(C语言单元测试) 1.0官方版
雨田单元测试系统(C语言单元测试)是一款适用于C语言文件的单元测试和集成测试系统.可以大幅度提高对C语言测试效率,从而提供软件质量. 雨田单元测试系统介绍 雨田单元测试系统可以针对c语言程序文件进行单 ...
- c语言测试框架设计,C语言单元测试框架Check
什么是Check Check是C语言的一个单元测试框架.它提供一个小巧的单元测试接口.测试案例运行在各自独立的地址空间,所以断言失败和代码错误造成的段错误或者其他的信号可以被捕捉到.另外,测试的结果显 ...
- C语言单元测试---cunit(一) ---- 博客经典;
C语言单元测试 http://blog.csdn.net/colin719/article/details/1420583 对于敏捷开发来说,单元测试必不可少,对于Java开发来说,JUnit非常好, ...
- 在.NET开发中的单元测试工具之(1)——NUnit
NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...
- python 单元测试 工具_Django单元测试工具test client使用详解
The test client test client是一个python类,来模拟一个简单的"哑"浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情 ...
- SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- 常见单元测试工具介绍
1. C/C++语言开发的首选利器- C++Test 以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++开发的范畴. ...
- 【Pytest:Python 单元测试工具学习】
[Pytest:Python 单元测试工具学习] Brief Introduction to Pytest Installation A Simple Testing Testing Whether ...
最新文章
- java实现责任链模式_我的Java设计模式-责任链模式
- 【论文解读】这篇顶会paper,讲述了疫情期间憋疯的你和我
- 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
- ip设置 kali 重置_和我一起配置黑客系统kali,带你成为大牛,你真的准备好了吗?...
- 开学一月,可以自己玩自己做的游戏了!!!
- 【转】HDC,CDC,CWindowDC,CClientDC,CPaintDC等等
- 1.Magento的配置系统
- html5中标签与类的区别,html5中section标签与div标签的区别是什么
- 按照计算机系统结构分类存储器可分为,存储器分类,存储器的分级结构
- 【有限域生成】本原多项式生成有限域的原理及MATLAB实现
- COCO2017 数据集分类统计
- 计算机辅助绘图工具,CAD精确辅助绘图工具
- html给图片加个放大效果鼠标经过,网页制作-如何在制作鼠标经过时图片放大效果...
- 使用 screw 导出 数据库表结构文档
- 微信王者服务器怎么删掉,微信王者荣耀账号怎么注销 王者注销微信账号方法一览...
- Spring 中 MongDB Conver转换器的使用
- 5G科普——CU和DU分离
- 计算机基础知识(基础入门小白专属)六
- 2010年01月读书单
- 百度快照更新与排名的关系
热门文章
- SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性
- vue-amap实现多种形式的地理围栏效果
- 网络闪断导致oracle监听终止,一个由网络闪断导致的CICS交易网关异常的案例分享...
- Python自动定时发送微信消息
- ubuntu安装subText3
- 在第四代计算机期间内,计算机的应用逐步进入到,在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
- java实现lz77算法实例_数据压缩算法---LZ77算法 的分析与实现
- 饱受ddos/cc攻击的站长朋友们,选高防服务器该选单机防御还是集群防御呢?
- 解决idea编译提示: Error:(4, 28) java: 程序包com.xxx.xxx不存在 问题
- Dubbo教程学习笔记——B站动力节点