我的任务是为现有项目(用 C 编写)编写单元测试(使用 cunit 和 cmocka),并且遇到了以下问题。当我包装在测试文件中定义的函数时,只调用原始函数。另外,无法更改测试文件的来源。我读到的所有内容都不符合第二个条件,但另一方面,很难相信单元测试框架没有为这类问题做好准备。
那么是否可以将函数调用包装到在一个文件中定义和调用的函数?
我试图通过向 cmake 文件添加适当的链接器标志来包装它。
我的任务是为现有项目(用 C 编写)编写单元测试(使用 cunit 和 cmocka),并且遇到了以下问题。当我包装在测试文件中定义的函数时,只调用原始函数。另外,无法更改测试文件的来源。我读到的所有内容都不符合第二个条件,但另一方面,很难相信单元测试框架没有为这类问题做好准备。
那么是否可以将函数调用包装到在一个文件中定义和调用的函数?
我试图通过向 cmake 文件添加适当的链接器标志来包装它。
是否可以将函数调用包装到在一个文件中定义和调用的函数?
cmocka
--wrap
如您所知,利用链接器的选项。的文档--wrap=symbol
告诉我们,您的问题的答案是否定的:
--wrap=符号
对符号使用包装函数。任何未定义的符号引用都将解析为 __wrap_symbol。对 __real_symbol 的任何未定义引用都将被解析为符号。
对它的任何引用symbol
都在一个还包含定义的对象文件中symbol
不是未定义的引用,因此链接器不会
将该引用解析为__wrap_symbol
. 必须将定义编译到链接中的某个其他目标文件中,以进行引用的包装。