c中的包装功能

时间:2018-02-07 13:10:22

标签: c unit-testing linker cunit cmocka

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

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

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

1 个答案:

答案 0 :(得分:0)

  

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

如您所知,

cmocka利用链接器的--wrap选项。 documentation of --wrap=symbol告诉我们答案 你的问题是否:

  

- 涡卷=符号

     

使用符号的包装函数。任何未定义的符号引用都将是   解决了__wrap_symbol。对__real_symbol的任何未定义引用都将是   解决了象征。

对包含该文件的目标文件中的symbol的任何引用 symbol的定义不是未定义的引用,因此链接器将 解决对__wrap_symbol的引用。必须将定义编译成 链接中的一些其他目标文件用于包装要发生的引​​用。