有没有办法通过GoogleTest测试函数调用c ++而不创建模拟对象,例如我们有以下生产代码:
if (a)
method(x);
我想测试在method
为True且a
为False的情况下是否会调用a
。我想构建一个与Google Test的EXPECT_CALL完全相同的测试,但EXPECT_CALL仅适用于模拟对象的方法。在我的情况下,我宁愿不使用模拟(不需要创建任何对象)。
答案 0 :(得分:2)
作为州here,
可以使用Google Mock来模拟自由函数(即C风格函数或静态方法)。您只需要重写代码以使用接口(抽象类)。
他们的“它可能”具有误导性,因为您必须重写代码以使用类(抽象或由模板提供),因此不再使用自由函数。
答案 1 :(得分:0)
如果您想伪造免费功能,可能需要查看Fake Function Framework (fff)。它允许您使用与GoogleMock类似的伪实现替换自由函数。
它可与GoogleMock和GoogleTest无缝协作。