测试使用文件描述符的C函数

测试使用文件描述符的C函数,c,linux,tdd,file-descriptor,C,Linux,Tdd,File Descriptor,我正在编写一些函数,这些函数将在生产代码中用文件描述符参数调用 在测试过程中,如何“注入”一些东西,让我确认函数对lseek、write等进行了预期调用?根据您的操作系统,最好的解决方案可能是编写一个垫片库,动态链接并拦截对您正在寻找的标准函数的调用,向测试线束报告带外情况。该库是如何工作的一个很好的例子,代码是可读的;它通过拦截一些取消链接的调用,而不是将链接移动到垃圾桶目录来实现Linux垃圾桶。根据您的操作系统,最好的解决方案可能是编写一个动态链接的垫片库,并拦截对您正在寻找的标准函数的调

我正在编写一些函数,这些函数将在生产代码中用文件描述符参数调用


在测试过程中,如何“注入”一些东西,让我确认函数对lseek、write等进行了预期调用?

根据您的操作系统,最好的解决方案可能是编写一个垫片库,动态链接并拦截对您正在寻找的标准函数的调用,向测试线束报告带外情况。该库是如何工作的一个很好的例子,代码是可读的;它通过拦截一些取消链接的调用,而不是将链接移动到垃圾桶目录来实现Linux垃圾桶。

根据您的操作系统,最好的解决方案可能是编写一个动态链接的垫片库,并拦截对您正在寻找的标准函数的调用,向测试线束报告带外情况。该库是如何工作的一个很好的例子,代码是可读的;它通过截取一些取消链接的调用,而不是将链接移动到垃圾桶目录来实现Linux垃圾桶。

由于您在Linux上,您只需在测试程序中定义要存根的函数即可。链接器将这些函数视为本地函数,而忽略将动态加载的函数。 我在带有gcc的Linux和Solaris上成功地使用了它


请确保存储调用它们的参数,不要将断言放在存根函数中,这将使它们更易于重用。

由于您使用的是Linux,您只需在测试程序中定义要存根的函数即可。链接器将这些函数视为本地函数,而忽略将动态加载的函数。 我在带有gcc的Linux和Solaris上成功地使用了它


确保存储调用它们的参数,不要将断言放在存根函数中,这将使它们更易于重用。

您的目标是什么操作系统?不幸的是,C语言没有Java语言那么简单。你可以使用调试器。@H2CO3-TDD:测试驱动开发,我想要一个测试套件。你的目标是什么操作系统?不幸的是,C语言没有Java语言那么简单。你可以使用调试器。@H2CO3-TDD:测试驱动开发,我想要一个测试套件。