验证并验证 NoMoreInteractions 到 gtest

verify and verifyNoMoreInteractions to gtest

我正在尝试为 gtest 重写从 JUnit 编写的测试:我遇到了以下几行:

when(obj1.peek(300)).thenReturn(true);
verify(obj1, times(1)).peek(333);
verify(obj2, times(1)).log(400);
verifyNoMoreInteractions(obj1);
verifyNoMoreInteractions(obj2);

而且我不知道该如何处理。 请帮助我。

P.S。如何从 gtest/gmock?

中获取一定比例的覆盖率

假设对象 obj1obj2 的模拟 类 被命名为 MyMockClass1MyMockClass2,下面是如何使用 gmock:

testing::StrictMock<MyMockClass1> obj1;
testing::StrictMock<MyMockClass2> obj2;

EXPECT_CALL(obj1, peek(300)).WillOnce(Return(true));
EXPECT_CALL(obj1, peek(333)).Times(1);
EXPECT_CALL(obj2, loog(400)).Times(1);

使用 testing::StrictMock 会将对该模拟对象的每个无趣的方法调用都视为错误,这应该是您希望通过 verifyNoMoreInteractions 实现的。

就代码覆盖率而言,我个人将 Visual Studio 插件用于 gtest,这样您就可以查看测试的代码覆盖率。由于您不能使用相同的,那么最好的选择可能是@Stefano 建议的 Gcov