GTest测试用例"EXPECT_CALL"编译错误

GTest test case "EXPECT_CALL" compilation error

#include "gtest\gtest.h"
using namespace testing;

class MyGTest : public Test
{
public:
    void f(){}
    void g(){
        f();
        f();
    }
};

TEST_F(MyGTest, first)
{
    EXPECT_CALL(*this, f()).Times(2);
    g();
}

VC2013 说:

    "MyGTest_first_Test" has no member "gmock_f"

这是什么意思?我希望调用 g() 调用 f() 2 次。我有语法错误吗?

不是语法错误,更像是一种完全错误的方法。宏观 EXPECT_CALL 用于设置函数调用的期望值 模拟对象。问题是你没有通过模拟 EXPECT_CALL 的对象(class 的对象,其定义包含 MOCK_METHODN),您正在取消引用 this 指针。在 这样做,您将测试对象 class 传递给 EXPECT_CALL。 这就是为什么编译器错误提到 class MyGTest_first_Test, gmock 在后台创建了一个新的 class ,它的名字是 a fixture class 名称(MyGTest)、测试用例名称的组合 (first) 和基础 class 名称 (Test).