0

我正在使用cpputes t 执行 c 代码的单元测试。

在我的测试源代码中,我有一个静态函数,当从单元测试环境调用时,我希望将其“重定向”到该函数的“伪造”版本。

比方说,我有这样的东西:

正在测试的源代码:

void my_main()
{
   read(int8 address);
}

借此;

   static int8 read(int8 address)
   {
      return something;
   }

单元测试环境:

TEST(MY_TESTS, READ)
{
   my_main();
}

在单元测试环境中调用my_main()时,我想重定向调用

读取(int8 地址) 到:

int8 fake_read(int8 address)
{
   //do_something
}

这里的正确方法是什么?我已经尝试使用函数指针而不是注入依赖项,但它不起作用。任何想法?

4

2 回答 2

0

我知道古老的问题,但是...

查看mock_c() http://cpputest.github.io/mocking_manual.html#other_mock_support周围的文档

int64_t GetTimeMS (void)
{
    mock_c ()->actualCall ("GetTimeMS");

    return (mock_c ()->returnValue ().value.longIntValue);
}
于 2021-03-03T11:23:24.500 回答
0

也许您可以利用链接器来做到这一点:创建两个源文件——一个带有静态函数的实际生产代码,另一个带有模拟实现。

对于测试,链接第二个;并运行您的应用程序的第一个。

于 2017-04-14T13:19:41.403 回答