我有一个单元测试,我想用GMock编写。然而,我对Mockito的熟悉程度主要是。我在莫奇托写的是:
Mockito.verify(mock, Mockito.never()).someFunctionCall(Matchers.<String>any());
doSomething(mock);
Mockito.verify(mock, Mockito.times(1)).someFunctionCall(Matchers.<String>any());
doSomethingElse(mock);它对应于验证doSomething从未调用someFunctionCall,而是被doSomethingElse调用了一次。
我将如何使用GMock完成同样的任务?
EXPECT_CALL(mock, someFunctionCall(_)).Times(0);
doSomething(mock);
EXPECT_CALL(mock, someFunctionCall(_)).Times(1);
doSomethingElse(mock);显然,由于期望堆积如山,所以无法工作。
发布于 2013-11-06 03:20:54
模拟::VerifyAndClearExpectations/ Mock::VerifyAndClear可用于这些目的。
发布于 2013-11-06 02:59:57
对于这种情况,您可能希望设置两个不同的测试。一个用于doSomething,另一个用于doSomethingElse。或者,如果第二种行为依赖于第一种,您可以这样做:
{
MyMock mock;
EXPECT_CALL(mock, someFunctionCall(_)).Times(0);
doSomething(mock);
}
{
MyMock mock;
EXPECT_CALL(mock, someFunctionCall(_)).Times(1);
doSomethingElse(mock);
}断言的验证是在对象销毁时完成的,因此将每个模拟限定为它所需的一组调用将验证断言。但实际上,我可能会尝试将这两种方法的测试分离为不同的测试。如果您有不想重复的样板设置,请将其插入您的TEST_F所派生的基类中。
https://stackoverflow.com/questions/19803034
复制相似问题