【问题标题】:How fake function framework can be used when 2 processes are involved in C/C++?当 C/C++ 中涉及 2 个进程时,如何使用假函数框架?
【发布时间】:2015-09-08 22:55:48
【问题描述】:

我有一些 C 代码(我的测试对象)正在与一些外部库进行交互。为了做一些组件测试,我为外部库编写了一个存根。我正在使用 google 测试框架 来编写测试用例。我在我的测试对象和谷歌测试之间设置了一些信号,这意味着我有 2 个进程。 1个用于谷歌测试,1个用于我的测试对象。一切正常。

现在我想使用 Fake Function Framework (fff.h) 而不是使用 存根库,它会在编译时自动生成存根。我知道如何生成存根,但问题是如果我们有一个进程,它会起作用,但我想将它用于多个进程。由于存根函数是在编译时生成的,有没有办法从另一个进程访问它们?

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见how to ask
  • 换句话说,您能否详细说明您是如何尝试使用 FFF 的以及您遇到了哪些错误/问题
  • 我已经为外部库编写了一个存根,花了几个星期。 fff 用于自动生成存根函数,这将减少一些开销工作​​。无需编写大型存根库。我试图了解当涉及 2 个进程时如何使用此框架。
  • --> 你用它做了什么尝试,你遇到了什么真正的问题?
  • 正如我所描述的 fff 将生成存根函数,它们将在编译期间在我的 test_process 中生成。我正在向我的测试对象发送信号,该对象将处理信号并调用我存根的外部库函数。现在的问题是这些存根函数在第二个进程中不可用。

标签: c++ c unit-testing testing


【解决方案1】:

您的 fff 存根可以编译成存档(静态库),然后静态链接到您的单元测试二进制文件中。您没有理由不能与多个单元测试二进制文件共享同一个库。

也可以将存根编译成动态库,但与多个测试二进制文件动态共享库通常没有意义,因为您的单元应该相互独立地进行单元测试。存根可能不可重入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2012-04-17
    相关资源
    最近更新 更多