sky_xuky 发表于 2012-1-6 17:20:04

如何测试无返回值的函数

本人刚接触单元测试,遇到很多问题,望各位大虾答疑解惑!
函数类似:
void ReleaseSession(char *actSession)()
{...}
函数功能: 释放操作对象,即释放掉内存,将指针置空;
actSession为函数输入值;

我的最初想法是:
函数没有返回值,是否可以判断actSession经函数处理后值应该为NULL,即可判断函数已作正确处理。但从调试来看,actSession一直是指向某快内存地址的。开发同事说,像这种情况比较难跟踪指针是否置空的。

所以,如果要测这样的函数,我该如何着手?

sky_xuky 发表于 2012-1-10 15:16:09

怎么没人回答呢?

VisualUnit 发表于 2012-1-10 15:37:02

void ReleaseSession(char *actSession)
对于指针本身来说,是传值的,因此,函数将内存清除后并将指针置空,在外部是看不到指针本身的值置空的,只是所指内存被释放了,如果声明改为
void ReleaseSession(char *& actSession)才会看到指针结果为NULL。

从测试角度来说,这里涉及到内部输出,也就是说,这个函数所做的动作,外部无法访问其结果,只能在函数内部判断结果是否正确。内部输出在单元测试中是很常见的,例如,函数计算好一个报文并发送出去,并没有将这个报文通过出参、返回值等输出,如何判断计算是否正确呢?这就是内部输出。类似的例子,计算好一个SQL语句并操作数据库,也是需要判断这个SQL是否正常,也是内部输出。

内部输入和内部输出是单元测试的两个难题,解决思路,可以参考一下Visual Unit。

sky_xuky 发表于 2012-1-10 17:29:52

回复 3# VisualUnit


    非常感谢~!

lanfox 发表于 2012-1-27 11:23:12

谢谢VisualUnit 的解答。
页: [1]
查看完整版本: 如何测试无返回值的函数