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
).
#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
).