gmock 如何指定不应调用其他模拟方法



我有一个模拟类,目前有三种方法被模拟:

MOCK_METHOD0(method1, std::string());
MOCK_METHOD1(method2, bool(std::string str));
MOCK_METHOD1(method3, bool(std::string str));
...

在一个测试用例中,我希望 method1 只在 mockClass 上调用一次,并且不应该通过指定 Times(0) 来调用其他模拟方法。

{
    InSequence sequence;
    EXPECT_CALL(*mockClass, method1(_)).WillOnce(doSomething());
    EXPECT_CALL(*mockClass, method2(_)).Times(0); 
    EXPECT_CALL(*mockClass, method3(_)).Times(0); 
}

但是,如果在模拟类上模拟方法的数量非常大,我将不得不编写很多.Times(0) 在这些我不希望它们被调用的模拟方法上。

我想如果我省略所有这些.Times(0),谷歌测试会将无趣的模拟函数调用打印到控制台,但这些是警告而不是错误,很难捕获。有没有一种简单的方法可以做到这一点?

您可以使用

StrictMock - 有关不同模拟变体的更多文档,请参阅此链接。

最新更新