禁止模拟类向量的gmock警告

时间:2018-07-26 15:28:11

标签: c++ googletest gmock

我正在用gmock编写单元测试。我在测试主体中有一些有趣的函数调用,因此我希望禁止它们发出gmock警告。但是,我尝试了几种方法,例如NiceMock或EXPECT_CALL,但没有一种起作用。这是我尝试过的东西:

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警告。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了答案。

问题是gmock没有为NiceMock提供move构造函数。因此我们必须将class的向量更改为unique_ptr的向量,问题才得以解决。

具体来说,应该像这样:

std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;

在推回新元素时,应使用:

my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());

它应该解决问题。 :)