Parasoft C++ Test桩函数生成之fopen()函数

Parasoft C++ Test桩函数生成之fopen()函数

在使用Parasoft C++ Test做单元动态测试时,遇到的一个问题。在待测函数中需要执行fopen的w方法,但是不管怎么操作,fopen(“文件路径”,“w”)一直返回NULL。fopen的w方法是指以写入方式(write)打开文件,如果文件不存在就会创建一个文件。
fopen()返回NULL指针,一般表示该操作是失败的。我所了解可能出现的失败原因如下:
①fopen的文件路径不正确:如果文件目录不存在或不正确,fopen()的w方法会执行失败。注意:是文件目录不存在或不正确,而不是文件名。
②待操作文件权限较高,无法执行fopen()操作。
要了解具体的出错原因,可以在相应的cpp文件中,导入error.h头文件【利用该头文件查看最近一次的系统程序出错原因】。然后在fopen()的语句后面接着添加语句:
cout<<“errno:”<<errno<<endl;
errno 是记录系统的最后一次错误代码,其值是一个int型。至于每个错误代码所代表的含义,可以自行查看百度百科字条errno。
【注意:该语句一定要紧跟在出错语句之后,因为errno记录的是最后一次或最近一次错误代码。】
我在我的程序中执行该语句之后,errno返回的值是0,没有相应的错误含义。
我发现我的错误既不是权限问题也不是文件路径有错,errno也显示0。于是只能找其他的原因了。
后面我发现,parasoft C++ Test会自动给生成一些系统安全桩函数,比如fopen()和exit()。通过Parasoft中的Stubs视图,我发现fopen()生成了系统安全桩函数【Safe桩】,我根据它提示的位置打开相应的文件,发现其中的fopen()函数中只有一句return语句,没有其他的语句。原来这才是我的fopen()一直返回 NULL的原因。
于是我在Parasoft测试配置中取消了系统安全桩的配置,我的fopen()就执行成功了。
因为是在单位的电脑上面做的单元测试,没有截图,可能有些地方没有讲清楚,有什么问题发邮箱1224541183@qq.com
关于桩函数的定义和优先级;Parasoft 关于系统安全桩函数测试配置请看我主页的另外两篇博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值