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


理解VU工程及测试工程

    VU工程自动生成测试代码,称为测试工程,测试工程使用用户提供的编译环境编译成可执行文件,执行该文件即执行测试。

    VU的测试工程与手工方式(包括使用开源UT框架)最基本的原理是一致的,差别在于,VU会自动完成大部分工作并为众多自动功能做好准备。理解了手工方式,也就容易理解VU的VU工程及测试工程。例如,一个C和C++混编的项目,共有1000个源文件,现在要测试其中任意20个源文件(被测文件),下面是工作步骤对比:
 

单  元  测  试  步  骤  对  比

  手工方式,假设使用某个开源UT框架xUnit 使用VU
工作方式 框架负责测试组织与结果显示,测试代码与框架联编成一个可执行文件。 VU根据VU工程的配置解析代码,自动生成测试工程,测试工程只执行测试,其他由VU处理。
工程 建立一个基于xUnit的测试工程 VU工程的配置(如果从产品工程文件或makefile文件导入数据,以下设置通常会自动完成
测试目标 把被测文件加入工程,编译 在测试目标页,把被测文件设为T
头文件 一般会提示头文件找不到,设置头文件搜索目录 在头文件页,设定常规头文件搜索目录
编译条件 如果产品项目使用了编译条件,会产生大量编译错误,设置相同的编译条件 编译页,设定预编译条件
引入库 编译通过,产生大量的链接错误,查看产品项目所链接的库,链接相应的库 在头文件页,设定库头文件目录 ,对于个别位于常规头文件目录下的库头文件,需设为L,在链接页加入要链接的库
外围文件 由于相关源文件未加入,仍有大量链接错误,将相关源文件加入编译 在测试目标页,把相关文件设为N
隔离文件 相关源文件又有相关源文件,无法隔断,其他链接错误用桩来解决,编写大量的桩 在测试目标页,其他文件设为X(缺省),自动打桩

工程建立完成,编译链接通过后,开始测试。VU在生成测试工程的过程中,已经自动为后续的测试做好了大量准备工作。

驱动 手工为每个类每个函数编写测试驱动 自动生成驱动
虚基类 虚基类无法实例化,难以测试,想办法解决 自动解决
私有成员 私有函数无法测试,私有成员无法访问,想办法解决 自动解决
用例 建立用例 在数据表格中建立用例
失真 打桩造成失真,大量测试难以进行,想办法解决 点几下鼠标就可以在表格中直接设置底层输入
不可控 因底层不可控(如访问硬件、网络),更多测试难以进行,想办法解决 同上
程序行为 期待:要是每个用例能看到执行了哪些代码,产生了什么输出... 自动显示
白盒覆盖 期待:要是能看到哪些语句、条件、分支、路径已覆盖,哪些未覆盖... 自动统计并显示,自动绘制逻辑结构图
白盒用例 期待:覆盖率到后面很难提高,要是有工具解决这个问题... 用例设计器基于现有用例找出遗漏用例