如何测试无返回值的函数
本人刚接触单元测试,遇到很多问题,望各位大虾答疑解惑!函数类似:
void ReleaseSession(char *actSession)()
{...}
函数功能: 释放操作对象,即释放掉内存,将指针置空;
actSession为函数输入值;
我的最初想法是:
函数没有返回值,是否可以判断actSession经函数处理后值应该为NULL,即可判断函数已作正确处理。但从调试来看,actSession一直是指向某快内存地址的。开发同事说,像这种情况比较难跟踪指针是否置空的。
所以,如果要测这样的函数,我该如何着手? 怎么没人回答呢? void ReleaseSession(char *actSession)
对于指针本身来说,是传值的,因此,函数将内存清除后并将指针置空,在外部是看不到指针本身的值置空的,只是所指内存被释放了,如果声明改为
void ReleaseSession(char *& actSession)才会看到指针结果为NULL。
从测试角度来说,这里涉及到内部输出,也就是说,这个函数所做的动作,外部无法访问其结果,只能在函数内部判断结果是否正确。内部输出在单元测试中是很常见的,例如,函数计算好一个报文并发送出去,并没有将这个报文通过出参、返回值等输出,如何判断计算是否正确呢?这就是内部输出。类似的例子,计算好一个SQL语句并操作数据库,也是需要判断这个SQL是否正常,也是内部输出。
内部输入和内部输出是单元测试的两个难题,解决思路,可以参考一下Visual Unit。 回复 3# VisualUnit
非常感谢~! 谢谢VisualUnit 的解答。
页:
[1]