2016-04-15 29 views
1

我試圖重寫測試從JUnit的書面GTEST:我面臨着以下幾行:覈實和verifyNoMoreInteractions到GTEST

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獲得覆蓋率的百分比?

+0

覆蓋我認爲他們有gcov。但我從來沒有真正看過它,所以我只是分享這一小塊的信息:https://gcc.gnu.org/onlinedocs/gcc/Gcov.html – Stefano

+0

或這是可能更好:http://opencppcoverage.codeplex .com/ – Stefano

+0

看起來你是谷歌模擬的'EXPECT_CALL()'後。 –

回答

1

假設你的對象obj1obj2模擬類被命名爲MyMockClass1MyMockClass2,這裏是你如何使用gmock這樣的:

用法 testing::StrictMock
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); 

對待每一個無趣的方法調用模擬對象作爲錯誤,這應該是你想用verifyNoMoreInteractions實現的目標。就代碼覆蓋率而言,我個人使用的是Visual Studio插件gtest,然後可以讓您看到測試的代碼覆蓋範圍。由於您無法使用相同的內容,因此最好的選擇可能是@Stefano建議的Gcov

+0

謝謝:) :) :) – Gilgamesz