C++;单元测试和第三方C库的存根 我需要对我用第三方C库编写的C++对象进行单元测试。由于超出本问题范围的原因,我无法直接调用第三方C库,需要将其删除以用于测试套件

C++;单元测试和第三方C库的存根 我需要对我用第三方C库编写的C++对象进行单元测试。由于超出本问题范围的原因,我无法直接调用第三方C库,需要将其删除以用于测试套件,c++,c,unit-testing,googlemock,C++,C,Unit Testing,Googlemock,对于单元测试套件的其他部分,我们使用了googlemock,但我认为它不能用于C库。我可以手动删除库,但不愿意(部分原因是懒惰(它相当大),但主要是因为它只是一个原则问题) 所以我的问题是:有没有一个工具可以基于C库头文件生成存根代码?一旦我有了存根代码,我将对它进行一些小的修改,然后我将链接到它进行单元测试。可以从头文件生成存根成员,除非您有特殊要求,否则它应该能够完成您正在寻找的任务。您不能像中所描述的那样将这些调用封装在类中 然后你可以(以动态或静态的方式)注入这个类,并对它设定期望值。除

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


所以我的问题是:有没有一个工具可以基于
C
库头文件生成存根代码?一旦我有了存根代码,我将对它进行一些小的修改,然后我将链接到它进行单元测试。

可以从头文件生成存根成员,除非您有特殊要求,否则它应该能够完成您正在寻找的任务。

您不能像中所描述的那样将这些调用封装在类中


然后你可以(以动态或静态的方式)注入这个类,并对它设定期望值。

除了存根之外,为什么不按照googlemock手册中的建议将这些C库函数调用封装在类中?@matekm,我对googlemock不太了解,我会研究如何做。我不知道这将如何工作,因为我的C++对象直接调用C函数。我是否必须更改代码以使用包装器对象,然后在单元测试中使用这些对象的模拟?看看@Brady:如果你没有绑定到googlemock,你也可以看看HippoMocks()。它支持模拟独立函数,而无需重写使用它们的代码。@Bartvaningeschenau,谢谢,我会研究一下。我曾尝试将stubgen用于C库头文件,但它没有生成任何内容。我认为它只针对C++而不是C,正如它在网页上提到的:“StudiGun--一个C++的成员函数存根生成器”