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


用例设计器应用示例之二

 
    本节演示比较复杂的情形,被测试代码如下图,功能是删除C++代码中的注释。
 
    
    

    首先根据功能设计了以下用例,看起来已经相当完整了:

   


    执行测试后,代码窗口部分未覆盖标示如下图:

   

    打开用例设计器,如下图,待满足条件所表达的意义是:'/'后就是字符串结束符'\0',因此,把近似用例的输入改为"int a;/",再把输出改为:"int a;/",点击执行并下一个。此用例会报告了一个错误。

   

    现在,用例设计器更新如下图。待满足条件表示:'/'后不是'/',已满足条件已规定:'/'后也不是'*'或'\0',综合起来看,'/'应该是一个除号,而不是注释符,这是一个容易忽略的特殊输入。把输入改为"int a = c/d;",输出也改为"int a = c/d;",点击执行并下一个。

    

    现在,用例设计器如下图,已满足条件有:
    cmmSin == true || cmmMul == true
    cmmSin == false
    已满足条件表达的意思是:cmmSin和cmmMul至少有一个为true,且cmmSin为false,因此cmmMul必定为true。
    待满足条件为cmmMul == false,与已满足条件冲突,因此,当前面对一个不可覆盖的逻辑单位。点击标记为删除。

   

    现在,用例设计器如下图,已满足条件有:
    cmmMul == true,表示已经进入多行注释;
    ch == '*',表示读到了多行注释结束符"*/"的'*'。
    待满足条件为next !='/',表示'*'后面不是'/',即可能是一个乘号。这又是一个极易忽略的输入。把输入改为"int a;/*comment 1*2 = 2 */\n",输出改为"int a;\n",点击执行并下一个。

   

    还有两个分支和一些路径未覆盖,继续设计用例,对比已满足条件和待满足条件,可以发现,这些分支和路径都不可覆盖,点击标记为删除。