51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3173|回复: 1
打印 上一主题 下一主题

请问哪位大侠有没有CUnit方面的资料呀?

[复制链接]
  • TA的每日心情
    开心
    2015-1-18 22:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2006-1-5 11:01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    请问哪位大侠有没有CUnit方面的资料呀?谢谢!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2006-5-16 19:24:02 | 只看该作者

    【Cunit测试工具使用】

    【Cunit测试工具使用】 需要的同志进来吧 下不到源码可以找我要 还是满有用的
    2005-12-19 09:05:13发贴人: goodluckyxl
    1.继Junit CppUnit的成功后, c语言环境下也出现了开发源码的白盒测试用例CUnit。
      暂时CUnit只是在SourceForge上还再不断改进中,虽然不是很完善,但是能用。
      因为是不要钱的,所以尽量的掌握他 多用 用好
      下面介绍一下CUnit结构框架和具体使用
      
    2.结构框架:
      在CUnit的主页上可以看到对他结构简单描述

                          Test Registry
                                |
                 ------------------------------
                 |                            |
              Suite '1'      . . . .       Suite 'N'
                 |                            |
           ---------------             ---------------
           |             |             |             |
        Test '11' ... Test '1M'     Test 'N1' ... Test 'NM'

      CUnit的测试是单线程启动,只能注册一个测试用例Test Registry,我认为这和结构设计和需求有关
    单线程数据结构是多重链表(对Suite,Test)组织起来,除非对测试用例再进行链表组织那样管理层次上
    已经多达到3层嵌套实现麻烦,并且用户需求和习惯也就是能接受一个作为一个独立用例一次测试。
    所以没有必要再费精力。
      继续结构分析一个起始测试下辖多个Suite(可以认为程序中各个独立模块),一个Suite管理多个Test
    (可以认为具体到模块内部函数实现)。
    整体测试流程就是这样:
      注册一个测试用例(如果已经注册了你可以cleanup掉然后重新注册使用)然后CU_add_suite增加你的模块
    然后CU_add_test再在你的模块下挂载你的模块内的测试函数。所有的挂载完毕后,调用你想使用的界面进行
    测试。
    下面是四种测试模式:
    1 Automated Output to xml file         Non-interactive
    2 Basic     Flexible programming       interface Non-interactive
    3 Console   Console interface (ansi C) Interactive
    4 Curses    Graphical interface (Unix) Interact

    注意12是没有交互功能的,4的Unix下的我是windows用户 选择第三个介绍console
    而且console是可以人机交互的。

    3.具体使用
      1.没有CUnit源码去http://sourceforge.net/projects/cunit/
        去down一份,这里是CUnit-2.0-2的例子。
      2.新建console工程 把自己要测试的代码文件加载进去,独立建一个main文件
      3.
      #include <stdio.h>
      #include "console.h"
      #include <assert.h>
      
      /*
       * Function:模块测试初始化工作,对模块内部Test函数需要用到的资源初始化
                   如当前里例子中则对Test1,Test2中使用的到的资源初始化
       *  Input:  None
       *  Return: 0:Succeed, or False
       *  Remark: 如果成功才进测试函数的测试运行否则此Suite下挂载的Test均不运行
       *  
       */
      int InitSuite()
      {
       return 0;
      }
      /*
       * Function:模块测试销毁工作,对模块内部Test函数需要用到的资源进行销毁
                   如当前里例子中则对Test1,Test2中使用的到的资源释放
       *  Input:  None
       *  Return: 0:Succeed, or False
       *  Remark: 不影响Test的运行,失败会报suite运行错误
       *  
       */
      int EndSuite()
      {
       return 1;
      }
      
      /*
       * 自己定义的函数过程形式不限制 可以extern近来或者包含,h近来供测试
       */
      int MyTest1()
      {
       return 1;
      }
      BOOL MyTest2()
      {
       return FALSE;
      }
      
      /*
       * Function: 单元测试例子也内部装载自己的函数过程
       *  Input:   ignore
       *  Return: true:Succeed, or False
       *  Remark: 失败回记录Test失败,内部可以使用CU_ASSERT检测最终会有检测结果
       *          CU_ASSERT中检测到的才是真正意义上的用户函数
       *  
       */
      
      int Test1()
      {
       CU_ASSERT(MyTest1());
       return 1;
      }
      
      BOOL Test2()
      {
       CU_ASSERT(MyTest2());
       return FALSE;
      }
       
      /*
       * 使用过程
       */
      int main()
      {
       CU_pSuite pSuite = NULL;
       
       //CU_initialize_registry 注册函数注册一个用例返回CUE_系列异常值
       if( CUE_SUCCESS != CU_initialize_registry())
        return CU_get_error();
       //CU_get_registry 返回注册到用例指针
       assert(NULL != CU_get_registry());
       //检测是否在执行
       assert(!CU_is_test_running());
       //CU_add_suite 增加一个Suite
       //"mySuite": Suite名字  
       //InitSuite EndSuite:分别是测试单元初始和释放函数,如不需要则NULL传递
       pSuite = CU_add_suite("mySuite",InitSuite, EndSuite);
       
       //检测注册suite情况 
       if(NULL == pSuite)
       {
        CU_cleanup_registry();
        return CU_get_error();
       }
      
       //注册当前Suite下的测试用例 
       //pSuite:用例指针
       //"Test1": 测试单元名称
       //Test1:测试函数
       if( NULL == CU_add_test(pSuite, "Test1", Test1) ||
        NULL == CU_add_test(pSuite, "Test2", Test2) )
       {
        CU_cleanup_registry();
        return CU_get_error();
       }
       //使用console控制交互界面的函数入口
        CU_console_run_tests();
        //调用完毕清除注册信息
           CU_cleanup_registry();
      }
      
    4:使用中可能出现的情况
      a: 找不到某些函数 加载CUnit.lib 在CUnit目录下,不行你就搜索吧
      b: #include "console.h" 找不到的话就inclue的console目录进来
      c: 注意使用不同模式测试可能需要平台不同 小心不要搞出问题了console是标准的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-6 17:35 , Processed in 0.076578 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表