抑制 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>>());

应该可以解决问题。 :)