APR中的单元测试框架:初步分析及使用

发表于:2010-1-08 13:20

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

 作者:yangzb(Javaeye)    来源:51Testing软件测试网采编

  我所了解的C的单元测试框架很少,至少我google了一把没有发现一个比较成熟的。我以前也写过一个C的单元测试框架,但是不够灵活,也不太好用。今天在看APR的源文件时发现了APR内部使用的测试框架。所谓内部使用,就是APR 库不提供接口给外部使用。不过这个框架很简单,也非常实用,分析分析拿来自己用还是相当划算的。

  框架的名字叫abts,我真不知道这个名字的含义,可能由于APR内部使用,所以在代码中对这个名字也毫无注释(整个测试框架的注释都很少)。

  框架代码主要在abts.h和abts.c中。先从入口函数开始分析。

  1、入口函数

  1)首先进行命令行参数的解析。根据命令行参数设置相应的全局变量。

  -v :是否以冗长方式打印测试结果。打印出错的行号,期望值以及实际值;

  -x:这个参数是表示只测试除了指定文件之外的测试用例。如test -x test1 test3 表示测试除了test1、test3文件之外的测试用例;

  -l:表示仅仅只列出包含测试用例的文件名,而不执行测试用例(去掉后缀);

  -q:是否显示每个suite的测试进度(进度条用spinning bar表示);

  2)执行每一个测试用例,代码很简洁。

for (i = 0; i < (sizeof(alltests) / sizeof(struct testlist *)); i++) {
    suite = alltests[i].func(suite);
}

  alltests中包含全部的测试用例,alltests在abts_tests.h文件中,如下所示。

const struct testlist {
    abts_suite *(*func)(abts_suite *suite);
} alltests[] = {
    {testatomic},
    {testdir},
    {testdso},
    //...

  testlist结构体只包含一个函数指针,这个函数指针指向的就是每一个测试用例函数。

  3)调用report函数生成测试用例报告。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号