首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试环境中的模拟/伪造静态函数

单元测试环境中的模拟/伪造静态函数
EN

Stack Overflow用户
提问于 2017-04-03 10:14:33
回答 2查看 467关注 0票数 0

我使用_cpputes_t来执行c代码的单元测试。

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

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

正在测试的源代码:

代码语言:javascript
复制
void my_main()
{
   read(int8 address);
}

藉此;

代码语言:javascript
复制
   static int8 read(int8 address)
   {
      return something;
   }

单元测试环境:

代码语言:javascript
复制
TEST(MY_TESTS, READ)
{
   my_main();
}

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

阅读(int8地址):

代码语言:javascript
复制
int8 fake_read(int8 address)
{
   //do_something
}

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

EN

回答 2

Stack Overflow用户

发布于 2017-04-14 13:19:41

也许您可以利用链接器来完成这个任务:创建两个源文件--一个带有静态函数的实际生成代码,另一个带有模拟实现。

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

票数 0
EN

Stack Overflow用户

发布于 2021-03-03 11:23:24

我知道一个古老的问题但是..。

看看mock_c() support周围的文档

代码语言:javascript
复制
int64_t GetTimeMS (void)
{
    mock_c ()->actualCall ("GetTimeMS");

    return (mock_c ()->returnValue ().value.longIntValue);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43181948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档