C/C++单元测试工具Visual Unit 4在线帮助


回调赋值概述

回调赋值简述
    回调赋值是VU4众多已申请专利的新技术中最酷的一个,也是非常重要的功能,使不便于表格驱动的数据类型也能够方便地实现表格驱动。 对于一般用户,需要设定回调赋值的类型通常很少,例如,一个项目可能不超过十个,编写回调函数的工作也很简单(通常只是数据的转换、拷贝或调用现有代码生成数据),但是,利用好此功能,将最大限度简化测试数据的设置工作,大幅提升测试效率,降低测试难度,即使完全不会编程的测试人员也可以实施单元测试(只要在编写回调函数时请程序员帮忙)。回调赋值虽然名为“赋值”,但实际上可用于输入和输出。
  
    回调赋值常用的应用场景有:
    1) 必须调用赋值函数的类型,例如,VC系列的CString类,直接拷贝字符串到对象的内存是不行的。
    2) 非数组集合,如链表、映射表。
    3)调用其他代码来生成数据更为简单的类型,例如,CTokenList是一个解释C代码得到的token列表,如果通过在表格中填写 一行代码,并调用产品工程中的现有代码来建立token列表,则比一个一个token分别设置要简单得多。
    4)其他特殊的测试需求,例如,通过在表格中填写函数名,为参数传递对应的函数指针。

    回调赋值针对数据类型的基本形式,一个类型设置好了,到处有效。例如,为CString类设置了回调赋值后,对任何参数、成员变量等的CString相关的变量都有效,如CString&、CString*、CString[10],CList<CString, CString>。回调赋值支持模板,例如,为CList<TYPE,ARG_TYPE>设置了回调赋值,则对其所有实例类都有效,除非该实例类另外设置了回调赋值。

    VU已经为开发环境自带的需要回调赋值的常用标准类型设置了回调赋值,如VC的CString,CList<TYPE,ARG_TYPE>,CStringToPtr,这些标准类型,用户可以直接使用回调赋值。针对自己的类型设定回调赋值时,这些已设置的类型 的回调赋值代码可以作为参考。 用户自定义的回调赋值可以在全企业通用。

回调赋值工作原理
    任何数据都有来龙去脉,也就是说,任何复杂类型都是由简单类型构成,或者可以由简单类型生成,或者可以由简单类型转换而来。
    回调赋值通过调用一个回调函数,回调函数将便于表格驱动的数据,转换为测试需要的数据。例如,CList<CString, CString>不便于表格驱动,而CString[16]便于表格驱动,回调函数在设置输入时将CString[16]类型的数据,加入到CList<CString, CString>的变量中,从而构造出测试需要的数据,在判断输出时将链表中的数据拷贝到数组,从而实现对整个链表的直接判断。
 
回调赋值类型在数据表格中的标示
    如下图,设置了回调赋值的类型,变量名后的类型名称均采用(过渡类型 : 目标类型)表示,过渡类型是表格中使用的类型, 如下图的变量jobList,用tagJobInfo*[16]作为过渡类型。 目标类型是变量的实际类型,下图中,CJobList是CList<tagJobList*, tagJobList*>的别名,本身并没有设置回调赋值,但模板类型CList设置了回调赋值。