EXPECT_CALL Google 测试中没有模拟

EXPECT_CALL without mock in Google Test

有没有什么方法可以通过 GoogleTest for c++ 来测试函数调用而不创建模拟对象,例如我们有以下生产代码:

if (a)
    method(x);

我想测试在 a 为真且 a 为假的情况下是否会调用 method。我想构建一个与 Google 测试的 EXPECT_CALL 完全相同的测试,但 EXPECT_CALL 仅适用于模拟对象的方法。就我而言,我宁愿不使用模拟(不需要创建任何对象)。

作为状态 here

It's possible to use Google Mock to mock a free function (i.e. a C-style function or a static method). You just need to rewrite your code to use an interface (abstract class).

他们的 "It's possible" 具有误导性,因为您必须重写代码才能使用 class (抽象的,或由模板提供),因此不再使用免费功能。

如果您想伪造一个免费功能,您可能需要查看 Fake Function Framework (fff)。它允许您用可以以类似于 GoogleMock 的方式使用的虚假实现替换自由函数。

它与 GoogleMock 和 GoogleTest 无缝协作。