1

我的任务是为现有项目(用 C 编写)编写单元测试(使用 cunit 和 cmocka),并且遇到了以下问题。当我包装在测试文件中定义的函数时,只调用原始函数。另外,无法更改测试文件的来源。我读到的所有内容都不符合第二个条件,但另一方面,很难相信单元测试框架没有为这类问题做好准备。

那么是否可以将函数调用包装到在一个文件中定义和调用的函数?

我试图通过向 cmake 文件添加适当的链接器标志来包装它。

4

1 回答 1

1

是否可以将函数调用包装到在一个文件中定义和调用的函数?

cmocka--wrap如您所知,利用链接器的选项。的文档--wrap=symbol告诉我们,您的问题的答案是否定的:

--wrap=符号

对符号使用包装函数。任何未定义的符号引用都将解析为 __wrap_symbol。对 __real_symbol 的任何未定义引用都将被解析为符号。

对它的任何引用symbol都在一个还包含定义的对象文件中symbol不是未定义的引用,因此链接器不会 将该引用解析为__wrap_symbol. 必须将定义编译到链接中的某个其他目标文件中,以进行引用的包装。

于 2018-02-08T10:13:07.400 回答