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


解析错误、警告及处理

打开“工程属性”
    新建VU工程后,VU会自动解析代码,生成桩、底层模拟、测试驱动、用例框架,然后自动编译测试代码。解析过程中,会在产品文件窗口的下半部分打印错误及警告信息。如果存在解析错误 ,则不会生成测试代码,更不会自动编译。
    解释错误是必须解决的,解决方法是修改工程属性,而多数警告可以忽略。在主工具栏单击,或在“工程”菜单单击“工程属性”,即可打开“工程属性”对话框。“工程属性”界面与“新建工程向导”类似,后文所称“切换到某页”,是指切换到“工程属性”的某页。
 

文件[xxx]包含的文件[xxx.h]未找到
    常见的原因是头文件搜索目录遗漏。与一般编译器一样,VU搜索头文件时,不搜索子目录。
    解决办法:切换到“头文件”页,增加include目录。VU具有自动搜索头文件所在目录的功能,如果认为未找到的头文件可能是库头文件,则点击“库头文件”右侧的“搜索”按钮,否则点击“常规头文件”右侧的“搜索”按钮,打开如下图所示的对话框,未找到的头文件已经自动列出,搜索的起始目录也已设好,如果需添加其他起始目录,请点击“添加”,不需要的起始目录,可点击选中后,再点击“删除”。点击“查找”,“查找结果”框中会列出所有包含这些头文件的目录(如果在多个目录下有同名头文件,全部列出), 选择需要目录,请点击“加入”,或者将不正确的目录删除,点击“加入全部”。
 

   

    另一种比较少见的原因是编译条件遗漏。编译条件是指产品项目使用了用户设定的“预处理定义”(可在工程Setting中查看,如,VC6.0,Preprocessor Definitions为“WIN32,_DEBUG,_CONSOLE,_MBCS,MY_DEFINE”,则“MY_DEFINE”就是“编译条件”),为了让VU的解析结果以及测试代码的编译结果与原项目一致,VU工程也要使用这些“编译条件”。
    解决办法:切换到“编译”页,在“预处理定义”输入框中,加入编译条件。

警告:头文件缺少预处理“哨兵”
    预处理“哨兵”是指:
    #ifndef XXX
    #define XXX
    //文件内容
    #endif
    用于防止头文件被重编译,重编译可能产生“标识符重定义”错误,如果头文件不需要重编译,建议在产品项目的头文件中加上“哨兵”。

警告:预处理“哨兵”已在其他文件定义
    可能因代码未编译产生“标识符未定义”错误,建议修改产品代码,消除不同头文件的相同预处理“哨兵”。

警告:在头文件中定义变量
    可能产生重定义错误,建议将产品代码的变量定义移到源文件,头文件只保留声明。