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


底层输入

   

底层输入
    底层输入就是调用底层函数取得的输入。能不能解决底层输入问题,是检验一个单元测试工具是否具有实用性的基本指标。VU4支持表格驱动的底层输入,只要点几下鼠标将指定的底层输入变量加入数据表,就可以在数据表中像参数一样设置底层输入值。
    底层输入分为直接底层输入和间接底层输入。例如,当前正在测试的函数为A,函数A调用了函数B,函数B调用了函数C,则针对B设置的底层输入为直接底层输入,这是常用的方式。有些时候,函数B需要调用实际代码,而对函数C设置底层输入,这种情形称为间接底层输入。间接底层输入不支持库函数。

设置直接底层输入的方法
    在VU主界面左侧的函数代码窗口,双击底层函数名,如下图中GetTemperature,即打开“设置底层输入”对话框。 
   
    底层函数(列表框):如果存在同名的多个重载函数,在这里选择正确的函数。一般会自动选择,但选择结果有可能不正确,因此最好确认一下。如果函数选择错误,则下边列出的参数 和返回值可能不正确,但不会影响对底层函数的调用过程。

    底层变量列表:
    调用底层函数后可以设置值的变量称为底层变量,包括:
    return,返回值,如果函数具有返回值,则存在return。
    参数,可能无, 也可能有多个。参数是指出参,也就是调用底层函数后有可能改写的参数,底层函数在逻辑上不会修改传值参数,因此传值参数不会列出。参数的数据名称,一般使用代码中实参的变量名称,如果实参是复杂的表达式,则会简化后作为参数的数据名称。参数的数据名称 和数据类型均可修改,方法是双击单元格。
    call times,调用次数,这是用于判断调用次数的底层变量。如果此变量有效,可在数据表中像判断一般变量的预期输出一样,判断底层函数的调用次数,支持> >= < <= !=等逻辑操作符。
    skip it,跳过,用于不设置底层输入直接跳过底层函数。
    .,成员变量,这里不需要指定具体的成员变量,如果成员变量有效,可在数据表中设置被测试类的任意成员变量的值,即设置底层函数对成员变量的修改。
    全局变量,需手动加入:从全局变量列表中,选择全局变量,并点击添加,用以设置底层函数对全局变量的修改。
 
    设为有效的底层变量均会自动加入数据表格,但是,数据表格中仍然可以对某些底层变量不设置值,也可以全部不设置值,全部不设置值则调用实际代码 (相当于未设置底层输入)。后面会介绍底层函数的调用规则。 

设置间接底层输入的方法
   
在VU主界面左侧的函数代码窗口,右键菜单选择“添加间接底层输入”,在函数列表中选择函数,点击“确定”,后续的设置与直接底层输入完全一致。

底层函数的调用规则
    1)如果一个用例中,底层变量中的返回值、参数、成员变量、全局变量中,有任一变量设置了值,则底层函数不再执行。
    2)如果一个用例中,底层变量中的返回值、参数、成员变量、全局变量均未设置值,则底层函数正常执行。
    3)在2)的情形下,如果skip it有效,则底层函数直接跳过。skip it与其他底层变量不同,不需设置值也是有效的。如果在一个用例中,须让skip it无效,则需将其值设为-1,设为其他值或不设值均有效。
    4)call times仅用于判断调用次数,对上述调用规则无影响。
    利用上述规则,可以在数据表格中直接控制一个底层函数在某些用例中设置底层输入,在某些用例中调用实际代码。对于执行测试过程中会产生异常的函数调用(如涉及界面的函数调用),如果本身不需要设置底层输入,可以通过skip it跳过,以避免异常导致测试中断。

多次调用设置不同值
    如果同一底层函数被多次调用(例如位于循环中,或在不同位置多次调用),每次调用需要设置不同的底层输入,则在数据表格中,用分号(;)分隔填写多个值,如:1;2;3,则第一次调用设为1,第二次调用设为2,第三次调用设为3。 如果值比调用次数少,则不足部分总是使用最后的值。
    VU3用户请注意:VU3用逗号分隔多次调用的不同值,而VU4改为用分号,逗号用于设置序列赋值

    如果多次调用需要输出同一对象,则需选中左下方的“重复调用输出同一对象”。如下代码,GetInstance()函数调用两次,从代码逻辑可以看出,这两次调用仅仅是为了取得一个对象,所以两次调用必须输出同一对象,否则代码无法正常执行。