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