您的位置:首页 > 其它

CUnit - A Unit Test Framework For C

2009-01-19 20:42 459 查看
(C)2009 蒋维

 

最近项目组想把用了一段时间的中间件API做一个单体测试,找了半天没有找到一个好的测试方法。最开始打算手动写点用力然后逐条测,但是log信息不好整理。突然发现CUnit这个东东。研究了一下。

 

继JUunit CppUnit的成功后, C语言环境下也出现了开放源码的白盒测试框架CUnit。CUnit在LGPL协议下以源代码形式提供给用户使用,用户可以编写程序时加入框架代码或直接链接编译好的静态库。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。 目前稳定版本为:CUnit-2.1-0。

 

由于这个东东基于LGPL所以我们就不能直接用它的源代码了(不然老板会杀了我的:))。所以只能给编成静态库来调用了(这下老板就happy了)。但是默认提供的Makefile在Linux下只能用gcc编译成库。和我们项目的的交叉编译环境的目标机硬件环境不兼容。还好有CUnit的源文件不多,手动用目标机的编译器编译成了库文件。这下用起来就happy多了,直接在工程里面加上库。

 

CUnit的组织结构如下图:

每个CUnit实例只能有一个Registy存在。

每个Registy能够注册多个Suit(从代码来看好像是255个,记不清楚了…)。Suit映射到项目就可以是各个模块。

最后每个Suit又可住注册多个手工写好的Case。也就是要测试的API用例。

 



 

用例注册一般是下面几步:

1.初始化框架

2.初始化Registy

3.向Registy注册Suit

4.向Suit注册Case

5.运行CUnit

6.清理资源

 

这些注册步骤基本上都是固定的,CUnit里面自带了一个sample写的很完整,很容易掌握。然后再多用两遍一下就熟悉了。

 

CUnit提供了四种测试模式:

1.Basic

2.Automated

3.Console

4.Cursor

 

Basic模式是直接将注册过的用例依次跑一遍,并且在标准输出中输出测试结果。

Automated模式将所用用例一次跑一遍,并且生成非常直观的XML文件格式的测试结果。

Console是控制台交互模式有一些简单的选项,比如选择个别用例测试。

Cursor我也没有用过这个模式,CUnit说是unix下专用模式,空了的时候试试。

 

最为一个单体测试框架CUnit并没有直接提供给你一个完整的测试用例,而是在手工编写的用例基础上实现自动调用。对于一些异步的API需要延时。总体来说我觉得对于中小规模的项目还是比较实用。

 

ps: Automated生成的XML文件需要源代码share目录下面的几个dtd和xsl文件配合才能正常显示。第一次我没有注意这个,生成的报告一个都看不了…

 

以上

蒋维
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息