【问题标题】:C++ Unit Testing and stubbing a 3rd party C libraryC++ 单元测试和存根第三方 C 库
【发布时间】:2012-12-23 10:04:18
【问题描述】:

我需要对我编写的一些使用第 3 方 C 库的 C++ 对象进行单元测试。由于超出此问题范围的原因,我无法直接调用第 3 方 C 库,需要将其存根用于测试套件。

对于我们单元测试套件的其他部分,我们使用googlemock,但我认为它不能用于C 库。我可以手动存根库,但不喜欢(部分是由于懒惰(它相当大),但主要是因为它只是一个原则问题)。

所以这是我的问题:有没有一种工具可以根据 C 库头文件生成存根代码?一旦我有了 stubbed-out 的代码,我会对它做一些小的修改,然后我会链接它以进行单元测试。

【问题讨论】:

  • 除了存根,为什么不按照 googlemock 手册中的建议将这些 C 库函数调用包装在类中?
  • @matekm,我不太了解 googlemock,并且会考虑这样做。我不确定这将如何工作,因为我的 C++ 对象直接调用 C 函数。我是否必须更改代码以使用 Wrapper 对象,然后使用这些对象的模拟进行单元测试?
  • @Brady:如果你没有绑定 googlemock,你也可以看看 HippoMocks(assembla.com/wiki/show/hippomocks)。它支持模拟独立函数,无需重写使用它们的代码。
  • @BartvanIngenSchenau,谢谢,我会调查的。

标签: c++ c unit-testing googlemock


【解决方案1】:

stubgen 可以从头文件生成存根成员,除非你有特殊要求,它应该能够做你想要的。

【讨论】:

  • 我尝试将 stubgen 用于 C 库头文件,但它没有生成任何内容。我认为它仅适用于 C++ 而不是 C,正如它在网页上提到的那样:“stubgen – C++ 的成员函数存根生成器”
【解决方案2】:

您不能将这些调用包装在 http://code.google.com/p/googlemock/wiki/CookBook#Mocking_Free_Functions 中描述的类中

然后您可以注入(以动态或静态方式)该类并对其设置期望。

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多