C单元测试框架

发表于:2010-1-28 13:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:译者:黄志霞    来源:51Testing软件测试网原创

  1. 引言

  1.1 概述

  CUnit是在C语言环境中用来编写、管理和运行单元测试的系统,它是用户通过编写测试代码进行连接的静态库。

  CUnit用一个简单的框架来建立测试结构,为常用数据类型的测试提供了丰富的断言语句,并为运行测试和报告测试结果提供各种接口,包括通过代码自动运行测试并报告测试结果的接口,还有使用户可以动态运行测试并查看结果的交互式接口。

  在下面的头文件中说明对用户非常有用的数据类型和函数:

头文件                                             含义

#include <CUnit/CUnit.h>              测试用例中的断言宏指令和其他的框架头文件
#include <CUnit/CUError.h>           
错误处理的函数和数据类型由CUnit.h自动加载
#include <CUnit/TestDB.h>            
数据类型定义和函数操作CUnit.h自动加载
#include <CUnit/TestRun.h>          
运行测试并报告测试结果的数据类型和函数的定义
#include <CUnit/Automated.h>      
自动实现xml输出
#include <CUnit/Basic.h>               
非交互式输出到stdout
#include <CUnit/Console.h>          
交互式控制台方式

#include <CUnit/CUCurses.h>       
交互的控制台方式(*nix)
#include <CUnit/Win.h>                 Windows
界面(尚未实现)

  1.2 结构

  CUnit由一个与平台无关的框架和各种用户接口组成。核心框架实现对Registry、测试包和测试用例的管理。通过用户接口方便地使用这个框架来运行测试并查看结果。

  CUnit和通常的单元测试框架是一样的:

  一个活动的测试Registry(相当于一个测试单元)可以注册多个包(Suite,可视为程序中独立的模块),每个包(Suite)又挂载多个测试用例(Test case)。包可以有setup和teardown 函数,在其执行前后自动进行调用。通过一个函数调用可以运行Registry中所有的包或用例,也可以选择一些包或用例来运行。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/28/n-205128.html

  4. 管理测试用例和测试包

  要通过CUnit运行测试,必须将测试添加进已注册到Registry的测试包中。

  4.1 内容概要

#include <CUnit/TestDB.h> (由 <CUnit/CUnit.h>自动加载)
  typedef struct CU_Suite
  typedef CU_Suite*  CU_pSuite
  typedef struct CU_Test
  typedef CU_Test*  CU_pTest
  typedef void (*CU_TestFunc)(void)
  typedef int  (*CU_InitializeFunc)(void)
  typedef int  (*CU_CleanupFunc)(void)
  CU_pSuite CU_add_suite(const char* strName,
                        CU_InitializeFunc pInit,
                        CU_CleanupFunc pClean);
  CU_pTest  CU_add_test(CU_pSuite pSuite,
                        const char* strName,
                        CU_TestFunc pTestFunc);
  typedef struct CU_TestInfo
  typedef struct CU_SuiteInfo
  CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[]);
  CU_ErrorCode CU_register_nsuites(int suite_count, ...);

  4.2 向 Registry加入Suite

  CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean)

  用指定的名称、初始化函数和清除函数创建包Suite。新的包注册到Registry并属于该Registry,而Registry必须在所有测试包加入之前完成初始化。当前不支持创建独立于Registry之外的Suite。

  包的名称必须是Registry内唯一。而初始化和清除函数并不是必须包含的,它们以指针的形式分别传递给Suite中的测试运行前后调用到的函数,这样包就可以setup或teardown临时变量来运行测试。这些函数不含参数并在执行成功时返回0(否则返回非0)。如果包不需要这两个函数,给CU_add_suite()传递参数null。

  返回指向新的Suite的指针,用于向包中加入Test。如果发生错误,返回NULL。相应的错误代码如下:

  ……………………

查看全文请点击下载:http://www.51testing.com/html/28/n-205128.html

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号