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


关于测试linux/unix项目的说明

需要的支持环境
    测试linux/unix项目,需要cygwin环境,cygwin是一个在windows平台上运行的unix模拟环境。有两种方式下载安装cygwin:
    1) 安装精简版(推荐):从以下地址下载安装包(约118M),执行安装包中的setup.exe完成安装:
    http://www.kailesoft.com/download/cygwin_setup.rar
    2) 在官方网站http://www.cygwin.com下载安装。
    安装后最好将cygwin/bin目录加入PATH环境变量,如果不加,一般也不会有问题,但有可能在以后执行测试时会因为某个dll找不到使测试执行失败。

建立工程
   如果windows系统是在独立的电脑上,则把要测试的linux/unix项目拷贝到windows下的某一目录,目录不能含有中文,如果windows系统运行在虚拟机上,则需设置共享目录,请参考linux/unix项目的边开发边测试。使用VU的新建工程向导建立测试工程,多数步骤与windows或嵌入式项目一致。

    在步骤一(选择模板):请选择Linux模板。
    在步骤二(导入数据):可以从makefile文件(如Makefile.in)导入项目数据,VU会首先尝试调用make来解析makefile,如果失败,再采用文本方式解析makefile文件(这种方式导入的数据可能不全或有些内容不正确,后续步骤可以手工调整)。这一步可以跳过。
    其他步骤与建立其他工程类似,请参考新建VU工程的常规过程

解析过程可能产生的问题
    解析过程中,当出现“xx文件未找到”的错误时,要在工程属性的头文件页点击“搜索”以查找头文件所在目录,建议首先在库头文件中搜索,即首先使用cygwin自带的头文件,因为项目如果使用了第三方库,这种库很可能已包含在cygwin中,建议优先使用。
  
编译链接过程可能产生的问题
    对于多数项目,编译过程还是比较顺畅的,一般不会产生大量的编译错误。出现编译错误的原因,通常是工程设置不完整。需要的设置可能有:预处理定义、需链接的库、库的目录。可以用文本编辑工具(如EditPlus)的多文件查找功能,在makefile文件中,分别搜索-D,-l,-L。下图是用“-D”搜索预处理定义:

   
 

    下图是搜索到的预处理定义:

   

    将预处理定义添加到工程属性的“编译”页,如下图:

   

    用同样的方法搜索需链接的库和库的目录,添加到工程属性的“链接页”,如下图:

   

    还有一种编译错误,错误信息如下图。这种错误通常是由于编译器的版本差异造成的,即产品项目使用的编译器较旧。如下图:struct timeval只是声明可见,定义不可见,因此报告了“array type has incomplete element type”错误,但这种错误在旧版编译器中可能不报告。在cygwin目录下搜索“timeval {”,可以找到它的定义,位于sys/time.h中。双击错误信息的源文件行,在箭头位置的前面加上#include <sys/time.h>,保存后重新编译,该编译错误消失。但是,这只是修改了测试文件,如果测试文件被刷新,错误又会重现,因此,更好的解决办法是在产品源文件中修改。如果多个源文件存在同一问题,要使用前述方法一一修改。如果报错的产品源文件都已经修改,却仍然存在这类错误,且位于文件名类似于“filename.hxx.c”的文件中(xx是一个数字),这是桩文件,可以通过刷新桩代码解决(在“代码”菜单,单击“刷新桩代码”)。

   

调试
    如果需要对测试代码进行调试,可以使用gdb调试器,位于cygwin\bin目录下。
    1)将测试工程目录(如:O:\ZhongBiao\smbnetfs-0.5.3\srctest\src\TestProject)加入到PATH环境变量。
    2) 在工程属性的“编译”页的命令行中,添加 -ggdb,Rebuild All。
    3)双击gdb.exe启动调试器后,执行:file vuxtest.exe。
    4)执行:run。
    5)关于gdb的详细使用方法,请参阅gdb手册。