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


局部输出

    局部输出用于判断被测试代码执行过程中,某些变量的实时值。局部输出也用于观察变量的实时值,即使不在数据表格中设置局部输出的预期结果,测试输出的数据窗口也会打印局部输出的值,以便观察程序的行为。

局部输出设置方法
    在VU主界面左边的函数代码窗口,点击输出位置,右键菜单选择“局部输出”,即可打开局部输出设置窗口,如下图,设置完成后自动加入数据表。

    可以通过双击函数代码窗口中的数据类型和变量名,快速设置数据类型和变量名。

    域用于区分不同位置设置的多个同名的局部输出,同名不同域的局部输出视为两个变量。如果存在多个同名也同域的局部输出,VU不会提示,而是按多次调用判断不同值的方式处理。

多次调用判断不同值
    如果同一局部输出被多次设置(例如位于循环中,或在不同位置多次设置且域相同),每次需要判断不同的值,则可在数据表格中,用分号(;)分隔填写多个值,如:1;2;3,则第一次设为1,第二次设为2,第三次设为3。 如果值比调用次数少,则不足部分总是使用最后的值。
 
   

判断所调用的代码
    对于不能用数据的计算结果来判断输出的情形,可以用判断所调用代码的方式来代替。

    对于调用了底层函数的代码,可以用判断底层函数的调用次数来作为输出,即设置底层输入的call times的输出,请参考底层输入

    对于不适合判断底层函数的调用次数的情形,可以使用插入代码+局部输出的方式来判断。VU定义了一个全局数组:long vux_var[16],可用于判断代码的调用状态。vux_var会在每个用例执行前清零。下面是一个示例:
    if (!(testflag & 2))
    {
        if (extend)
        {
            _INSERT_(vux_var[0] = 1;)  //第5行
            puts("- check records and index references"); //第6行
        }
        else
        {
            _INSERT_(vux_var[0] = 2;)  //第10行
            puts("- check record links");                //第11行
        }
        _OUTPUT_(long,vux_var[0],'A'); //第13行
    }
    在上例中,为了判断在某种条件下,结果是调用第6行还是第11行,用插入普通代码 vux_var[0] = 1; 添加了第5行,用同样方法添加了第10行,用局部输出添加了第13行。在用例数据中,通过判断vux_var[0]的结果是否为1,可以判断是否调用了第6行,同样,通过判断vux_var[0]的结果是否为2,可以判断是否调用第11行。
    当同一函数需要在不同代码块多次使用vux_var时,可以取不同的index,例如,代码块一使用vux_var[0],代码块二使用vux_var[1],最大为vux_var[15]。