我正在使用 cpputes 来执行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
}
这里的正确方法是什么?我已经尝试使用函数指针而不是注入依赖项,但它不起作用。 有什么想法吗?
答案 0 :(得分:0)
也许您可以利用链接器执行此操作:创建两个源文件 - 一个包含静态函数的实际生产代码,另一个包含模拟实现。
对于测试,链接第二个;以及第一个运行您的应用程序。
答案 1 :(得分: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);
}