抑制 mock class 向量的 gmock 警告
suppress gmock warning for a vector of mock class
我正在用 gmock 编写单元测试。我的测试主体中有一些无趣的函数调用,我想为其抑制 gmock 警告。但是,我尝试了多种方法,例如 NiceMock 或 EXPECT_CALL,但其中 none 有效。这是我尝试过的东西:
class MockClass : public OriginClass {
// class body
int aFunc();
}
NiceMock<std::vector<MockClass> > mock_vector;
NiceMock<MockClass> tmp;
mock_vector.push_back(tmp);
EXPECT_CALL(tmp, aFunc())
.WillRepeatedly(Return(1));
但我一直收到无趣函数调用的 gmock 警告。有人可以帮忙吗?
好的,最后我自己找到了答案。
问题是 gmock 没有为 NiceMock 提供移动构造函数。所以我们要把class的向量改成unique_ptr的向量,问题就解决了
具体应该是这样的:
std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;
推回新元素时,你应该使用:
my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());
应该可以解决问题。 :)
我正在用 gmock 编写单元测试。我的测试主体中有一些无趣的函数调用,我想为其抑制 gmock 警告。但是,我尝试了多种方法,例如 NiceMock 或 EXPECT_CALL,但其中 none 有效。这是我尝试过的东西:
class MockClass : public OriginClass {
// class body
int aFunc();
}
NiceMock<std::vector<MockClass> > mock_vector;
NiceMock<MockClass> tmp;
mock_vector.push_back(tmp);
EXPECT_CALL(tmp, aFunc())
.WillRepeatedly(Return(1));
但我一直收到无趣函数调用的 gmock 警告。有人可以帮忙吗?
好的,最后我自己找到了答案。
问题是 gmock 没有为 NiceMock 提供移动构造函数。所以我们要把class的向量改成unique_ptr的向量,问题就解决了
具体应该是这样的:
std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;
推回新元素时,你应该使用:
my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());
应该可以解决问题。 :)