我正在编写一些函数,这些函数将在生产代码中使用文件描述符参数进行调用。
在测试过程中,如何"注入"一些东西,让我确认函数对lseek
、write
等进行了预期的调用?
由于您使用的是Linux,您可以简单地定义要在测试程序中存根的函数。链接器将把这些函数视为本地函数,并忽略那些将被动态加载的函数
我在带有gcc的Linux和Solaris上成功地使用了它。
确保存储调用它们的参数,而不是将断言放在存根函数中,这将使它们更具可重用性。
根据您的操作系统,最好的解决方案可能是编写一个"shim"库,该库可以动态链接并拦截对您要查找的标准函数的调用,并向测试工具报告带外情况。libtrash库就是一个很好的例子,说明了它是如何工作的,并且代码是可读的;它通过拦截(一些)对unlink
的调用,而不是将链接移动到垃圾桶目录,为Linux实现了一个"垃圾桶"。