C++单元测试和为第三方C库存根

4
我需要对我编写的使用第三方C库的C++对象进行单元测试。由于超出了这个问题的范围,我不能直接调用第三方C库,因此需要为测试套件进行存根。
对于我们单元测试套件中的其他部分,我们使用googlemock,但我认为它不能用于C库。我可以手动存根该库,但我不想这样做(部分原因是懒惰(它相当大),但主要是因为这只是一个原则问题)。
所以我的问题是:是否有一种工具可以基于C库头文件生成存根代码?一旦我有了存根代码,我将对其进行一些小修改,然后链接到它以进行单元测试。

为什么不像Google Mock手册中建议的那样,将那些C库函数调用包装在类中,而不是使用桩对象? - matekm
@matekm,我对googlemock不是很熟悉,但会尝试学习。但我不确定这样做的可行性,因为我的C++对象直接调用C函数。我是否需要更改代码以使用包装器对象,然后在单元测试中使用这些对象的模拟? - Brady
2
查看http://code.google.com/p/googlemock/wiki/CookBook#Mocking_Free_Functions。 - matekm
1
@Brady:如果你不局限于googlemock,你也可以看看HippoMocks(https://www.assembla.com/wiki/show/hippomocks)。它支持对独立函数进行模拟,而不需要重写使用它们的代码。 - Bart van Ingen Schenau
模拟是替换难以测试的第三方API的错误方法。您不关心API如何完成其工作,因此任何检查第三方库使用的测试都将变得脆弱,并且会测试错误的内容。 - John McFarlane
2个回答

3

stubgen可以从头文件生成存根成员,除非您有特殊要求,否则它应该能够满足您的需求。


我尝试使用stubgen处理C库头文件,但它没有生成任何内容。我认为它只适用于C++而不是C,因为网页上提到了这一点:“stubgen - 用于C ++的成员函数存根生成器”。 - Brady

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接