为了让测试代码正确链接到桩函数,一般来说,要让函数具有与原函数相同的原形,这样就产生了一个问题:原函数与桩函数冲突。打桩过程中必须解决这个问题。
在实际工作中,打桩可以分两步来完成:
一、隔离测试任务,补齐未实现代码。可以利用IDE的链接错误来判断哪些函数需要打桩。例如,一个项目有1000个源文件,某位工程师需要测试其中的50个源文件,可以用IDE建立一个工程,将这50个源文件加入并编译,然后根据“符号未定义”链接错误,判断需要打桩的函数或全局变量,并编写桩代码。由于测试任务以外的源文件被隔离,这一步不会产生桩函数与原函数的冲突。
二、在测试过程中,视需要编写实现控制功能的桩代码。如果桩代码已经在上一步中编写,只要修改其实现就行了,如果不存在,通常表示原函数未被隔离,这时可以用编译条件来区分原函数与桩函数,如: