2017-04-03 128 views
0

我正在使用cpputes t来执行c代码的单元测试。在单元测试环境中嘲弄/伪造静态函数

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

比方说,我有somethig这样的:

源代码测试:

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 
} 

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

+0

通常,对于伪造或嘲笑函数调用或模拟功能都写在一个单独的文件和被包括并从主驱动程序调用的任何功能。 我不知道的__cpputest__是如何工作的,但如果它在运行时设置任何环境变量,那么的环境变量可以在主函数读取并且可以使检查以决定哪些要调用的函数,即模拟功能或实功能。 – Gaurav

回答

0

也许你可以利用链接来做到这一点:创建两个源文件 - 一个与静态函数的实际生产代码和一个与模拟实现。

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