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

GTest test case "EXPECT_CALL" compilation error

本文关键字:编译 错误 CALL EXPECT 测试用例 GTest      更新时间:2023-10-16
#include "gtestgtest.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(类的对象,其定义包含 MOCK_METHODN ),而是取消引用指针this。在这样做,您将测试类的对象传递给EXPECT_CALL 。这就是为什么编译器错误提到类MyGTest_first_Test的原因,gmock 在后台创建一个新类,它的名字是夹具类名(MyGTest)、测试用例名称的组合(first)和基类名(Test)。