2016-04-15 8 views
1

Ich versuche Test für Gtest von JUnit geschrieben zu umschreiben: stand ich die folgenden Zeilen:zu überprüfen und verifyNoMoreInteractions Gtest

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

Und ich weiß nicht, wie er damit umgehen. Bitte helfen Sie mir.

P.S. Wie bekomme ich einen Prozentsatz der Abdeckung von gtest/gmock?

+0

für Abdeckung ich denke, sie haben gcov. aber ich habe es nie wirklich angeschaut, also teile ich einfach dieses kleine Stück Info: https://gcc.gnu.org/onlinedocs/gcc/Gcov.html – Stefano

+0

oder das ist wahrscheinlich besser: http: //opencppcoverage.codeplex .com/ – Stefano

+0

Sieht so aus, als ob du nach 'EXPECT_CALL()' von Google mockst. –

Antwort

1

Unter der Annahme, dass Ihre Mock-Klassen für Objekte obj1 und obj2 benannt sind MyMockClass1 und MyMockClass2, hier ist, wie Sie das tun gmock mit:

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); 

Verwendung von testing::StrictMock behandelt jeden uninteressant Methodenaufruf an diesem Mockobjekt als ein Fehler, der sein sollte, was Sie mit verifyNoMoreInteractions erreichen wollen.

Soweit Code Coverage geht, verwende ich persönlich die Visual Studio-Add-on für Gtest, die dann Sie Code-Coverage-Tests zu sehen, ermöglicht. Da Sie nicht das gleiche verwenden können, ist die beste Wette wahrscheinlich Gcov vorgeschlagen von @Stefano.

+0

Danke :) :) :) – Gilgamesz