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

时间:2016-02-22 04:59:00

标签: c++ testing googletest googlemock gmock

#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次。我做的任何语法错误?

1 个答案:

答案 0 :(得分:3)

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