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