我想通过使用 cmocka 框架实现单元测试来测试一些功能。
例如,我有一个正在测试的非静态函数,它调用两个静态函数。由于这些静态函数与硬件交互的事实,我想模拟/包装它们并在测试时使用包装函数而不是真实函数。
就像在 cmocka 文档中描述的那样,我在构建/链接我的测试时使用了 --wrap=myfunction 链接器标志。
测试编译但是当我运行它们时,将调用真正的静态函数而不是包装。
当我将静态函数声明为非静态时,它也不起作用,并且调用了真正的函数。我发现的唯一解决方案是将函数外包在一个额外的 .c 文件中......但这是一个非常糟糕的解决方法,因为它非常操纵代码。