51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5222|回复: 18
打印 上一主题 下一主题

[求助] UV出错的提示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-29 11:35:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我之前的问题已经找到了,自己已经排除,但新的问题又来了。
测试工程已经OK,现在要做生成测试文件前的准备工作,对这方面我一直没弄对,希望老师们给讲讲。
1、为了发挥VU的功能,需要在被测试文件中添加两个宏:
UINT_TEST宏:功能是定义友元,使测试代码可以访问类的私有或保护成员。
TEST_DUMP宏:这是一组宏,格式与VC60的消息映射宏相似,功能是为自定义数据类型输出成员变量的数值
这2个宏怎么加,加在哪里啊?
2、在被测文件中添加代码
被测试文件,那是在原工程文件里啊,是在那里加还是在测试工程文件里加啊?


在线等回复啊,急!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-4-29 12:47:03 | 只看该作者
1 这两个宏可以不加,但如果不加的话,就不能测试私有或保存的函数,测试用例中也不能直接访问私有成员变量,同时测试时也不能看到成员变量的输入输出值,所以还是要加好。
2 这两个宏是由工具生成的,点击导航窗口右边数过来第三个按钮,打开后填写类名和成员变量名,就会生成相应的代码,拷贝到产品文件中,具体位置请看窗口上的提示。
3 在被测试文件中添加代码就是指上面的两个宏,没有其他代码。这两个宏虽然是加在产品文件中,但只有在定义了_VUNIT时才被编译,对产品工程(包括调试版)没有影响。
4、帮助文件中 测试文件->在被测试文件中添加代码 这一篇有详细说明。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-4-29 12:55:46 | 只看该作者
[被测试文件,那是在原工程文件里啊,是在那里加还是在测试工程文件里加啊?]

测试工程中的被测试文件,是直接把原工程的文件加入进来的,所以在原工程中加,或在测试工程中加,都是一样的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-4-29 13:07:41 | 只看该作者
谢谢您,我再试试
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-4-29 13:14:52 | 只看该作者
完了,我加了这个之后,愿工程文件和测试工程都编译不过了,还出现了好多错,在我建立好测试工程未选择测试文件时是都可以编译通过的啊,急啊。。。。。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-4-29 13:24:24 | 只看该作者
不要着急,VU很特别,所以初学常常会以为很难。

可能是产品文件没有加入VUnit.h文件。

如果产品工程使用了预编译头文件,请在stdafx.h中添加
#include "VUnit.h"

否则在产品文件的头文件中添加:
#include "VUnit.h"

然后再试一下。

帮助是很详细的,也专门有一章讲述各种编译错误的发生原因及解决办法,建议您看一下。

[ 本帖最后由 VisualUnit 于 2006-4-29 13:26 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-4-29 13:32:22 | 只看该作者
我加了的,真的还是不行,怎么回事啊?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-4-29 13:48:31 | 只看该作者
请把编译错误贴出来看一下
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-4-29 13:52:24 | 只看该作者
--------------------Configuration: Testtestsocket - Win32 Debug--------------------
Compiling...
Testtestsocket.cpp
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2059: syntax error : '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2061: syntax error : identifier 'CUserClass'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '&'
f:\visual unit\samples\c++ builder\testtestsocket\ctestsocketapptester.h(25) : fatal error C1083: Cannot open include file: 'TestSocket.h': No such file or directory
TesttestsocketDlg.cpp
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2059: syntax error : '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2061: syntax error : identifier 'CUserClass'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '&'
Generating Code...
Error executing cl.exe.

Testtestsocket.exe - 15 error(s), 0 warning(s)
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-4-29 14:31:15 | 只看该作者
你的被测试文件是:testsocketapp.cpp/testsocketapp.h对吗?这个应该是VC生成的工程类文件吧?它是工程的最上层文件,比界面类还要上层,因为它还要引用界面类。单元测试一般不测试界面类的,因为涉及到资源,加入到测试工程中无法编译,当然也不能测试比界面类还要上层的类了。

建议您用底层类试一下。先把这个出问题的测试文件删除(VU导航窗口->菜单->删除测试文件),另外也把testsocketapp.cpp/testsocketapp.h从测试工程中删除。

[ 本帖最后由 VisualUnit 于 2006-4-29 14:35 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2006-4-29 14:39:48 | 只看该作者
那我还测试什么呢?不就是为了测试这个工程中的所有文件吗?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2006-4-29 14:42:31 | 只看该作者
照你说的做了就出现这样的提示:
--------------------Configuration: Testtestsocket - Win32 Debug--------------------
Compiling...
TesttestsocketDlg.cpp
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(41) : error C2059: syntax error : '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2061: syntax error : identifier 'CUserClass'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '*'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2143: syntax error : missing ',' before '&'
f:\visual unit\samples\c++ builder\testtestsocket\testtestsocket.h(44) : error C2059: syntax error : '&'
Error executing cl.exe.

Testtestsocket.exe - 7 error(s), 0 warning(s)
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-4-29 15:20:34 | 只看该作者
单元测试是测试底层的文件,并不是所有文件。
工程文件是每个工程独有的,你把它加到另一个工程里是不行的。

testtestsocket.h这个还是工程文件啊,把它从测试工程中删除。

单元测试要分别测试一个一个的底层文件,而不是一下子测试所有文件。

[ 本帖最后由 VisualUnit 于 2006-4-29 15:21 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2006-4-29 16:12:47 | 只看该作者
都删除了编译还能通过吗?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-4-29 16:46:08 | 只看该作者
上边说错了。
testtestsocket.h是测试工程的文件,不能删除。

这样吧,你把产品工程和测试工程打包发送到service$@$unitware.cn,我帮你看一下。前面的email地址中要把$删除,这样写为了减少垃圾邮件。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2006-4-30 10:43:27 | 只看该作者
恩,好,谢谢你
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-4-30 14:06:12 | 只看该作者
发给你的邮件退了回来,不知道为什么,所以回复在这里。

您好!

    我试了一下,产生错误的原因在于您在stdafx.h中添加#include "VUnit.h"时,放在了其他include的前面,应该放在后面才行。这个我们没有做特别说明,因为这是惯例,系统所加的include文件一般是基本的库文件,用户文件可能要引用这些库文件,所以要放在后面。

    另外,#include "VUnit.h"主要是要加在产品工程的stdafx.h中,因为在被测试文件中添加的代码要使用其中的一些宏定义。

    我用测试了一下CMySocket类,有些问题这里顺便说一下,可能能帮您少走弯路:
   
    1、产品工程中定义了全局对象:CSocket udpSocket; 而CMySocket参引用了这个全局对象,所以测试工程中也要加这个全局变量;
    2、CMySocket类引用了其他类,也要把引用的文件加了到测试工程;
    3、CMySocket类的构造函数引用了App对象指针和CDocTemplate对象指针,这些都是最高层的对象,它们可能引用工程中的所有对象,这就造成了CMySocket和工程中的所有类的耦合,这种耦合将造成CMySocket无法测试。这几行代码可能放在其他地方如~App:InitInstance更好些。我是把这几行注释掉才进行测试的。这是单元测试的特性决定了的,跟工具无关,并且可以说,这不是一种局限性,反而是一种有效的约束机制,有助于提高代码的质量。

    我把成功运行了测试的产品工程和测试工程发回给您,可以参考一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2006-4-30 15:45:22 | 只看该作者
谢谢您,太感谢了,有什么问题再向您请教:)
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2006-5-1 09:20:07 | 只看该作者
不用客气。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-28 07:14 , Processed in 0.091879 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表