C单元测试包设计与实现

发表于:2009-12-01 13:57

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

 作者:51Testing会员    来源:51Testing软件测试论坛

  在Java、C++和C#等高级语言的单元测试正进行的如火如荼的时候,C好像做了看客,冷清的躲在了一个不起眼的角落里。C并不是没有单元测试工具,像Check和CUnit这样的工具也很有名气,只是和大名鼎鼎的JUnit比起来,还是显得有些英雄气短。很多大型的C项目,如APR等都没有使用像Check、CUnit这样通用的单元测试框架,而是另起炉灶自己编写。其实编写一个仅能满足单个项目需要的C单元测试工具包并非难事。在部分参考 APR的ABTS的前提下,我们也来设计一套自己的简单的C语言单元测试包。

  鉴于减少复杂性,我们的目标仅仅是设计和实现一套能在单进程、单线程下工作良好的C单元测试包,我们暂且将之命名为CUT - C Unit test Toolkit。

  1、CUT涉及的术语解释

  曾经接触过多个有名的单元测试框架如JUnit、CppUnit、TestNG等,它们在对单元测试某些概念的理解上并不是全都一样的。这里我们也有我们自己的定义。

  a) 一个逻辑unit test包含至少一个或者多个suite;

  b) 一个suite包含至少0或者多个test case;

  c) 每个test case中至少包含1个或者多个“断言类”语句。

  2、CUT预告片

  其实每设计一个程序之前自己都会考虑该提供给用户怎样的东东呢?下面是应该是CUT的经典用法:

cut_ts_t *suite = NULL;

CUT_TEST_BEGIN("classic usage of CUT");

CUT_TS_INIT(suite);
CUT_TC_ADD(suite, "test case: tc_add", tc_add);
CUT_TC_ADD(suite, "test case: tc_sub", tc_sub);
CUT_TS_ADD(suite, my_setup, my_teardown);

CUT_TEST_RUN();

CUT_TEST_REPORT();

CUT_TEST_END();

  3、CUT的组织结构

  从上面的经典用法中也可以看出我们的CUT的组织是这样的:

            Test
             |
             |
        +-------------+
       TS-1    ...  TS-N
        |                |
        |                |
   +-------+ ...   +--------+
  TC-1   TC-N     TC-1     TC-N

  其中:TS - Test Suite,TC - Test Case
41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号