logo

Mock versus Stub versus spion

Bespotten

Mocks zijn de objecten waarin methodeaanroepen worden opgeslagen. Het noemde de dynamische wrappers voor afhankelijkheden die in de tests werden gebruikt. Het wordt gebruikt om de interactie tussen de Java-klassen vast te leggen en te verifiëren. Een mock staat bekend als de krachtigste en meest flexibele versie van het testdubbel. We gebruiken een methode om te spotten, genaamd bespotten() .

De belangrijkste functie van het gebruik van mocks is dat het volledige controle geeft over het gedrag van de bespotte objecten. Meestal worden de nepobjecten gebruikt gedrag verificatie . De term gedrag betekent het controleren van de juiste methoden en paden die op de objecten worden toegepast.

Mocks worden meestal gemaakt met behulp van een bibliotheek of een spotframework zoals Mockito, JMock en EasyMock. Het wordt gebruikt voor het testen van een groot aantal tests waarbij stubs niet voldoende zijn. Een van de essentiële functies van mock is dat we kunnen verifiëren hoe vaak een bepaalde methode wordt aangeroepen.

10 van 100

Het volgende codefragment laat zien hoe u mock() gebruikt.

 ToDoService doService = mock(ToDoService.class); 

Stomp

Stubs zijn de objecten die vooraf gedefinieerde gegevens bevatten en deze gebruiken om tijdens tests antwoorden te geven. Met andere woorden, een stub is een object dat lijkt op een echt object met het minimale aantal methoden dat nodig is voor een test. Stubs worden gebruikt als we geen objecten willen gebruiken die een antwoord zouden geven met echte gegevens. Een stomp wordt de lichtste en de meest statische versie van de testdubbel genoemd.

De belangrijkste functies van de stompjes zijn:

scan.nextstring java
  • Het retourneert altijd de vooraf gedefinieerde uitvoer, ongeacht de invoer.
  • Het kan worden gebruikt om op de databaseobjecten te lijken.
  • Stubs worden gebruikt om de complexiteit die optreedt tijdens het maken van de echte objecten te verminderen. Ze worden voornamelijk gebruikt voor optredens staat verificatie .

Spion

Spionnen staan ​​bekend als gedeeltelijk nepobjecten . Het betekent dat spion een gedeeltelijk object of een halve dummy van het echte object creëert door de echte te bespioneren of te bespioneren. Bij spionage blijft het werkelijke object ongewijzigd en bespioneren we slechts enkele specifieke methoden ervan. Met andere woorden, we nemen het bestaande (echte) object en vervangen of spion slechts enkele van zijn methoden.

postbode

Spionnen zijn handig als we een enorme klas vol methoden hebben en we bepaalde methoden willen bespotten. In dit scenario zouden we de voorkeur moeten geven aan het gebruik van spionnen in plaats van schijnvertoningen. Het roept het echte methodegedrag aan, als de methoden niet zijn stopgezet.

In Mockito wordt de spy()-methode gebruikt voor het maken van spionageobjecten. Hiermee kunnen we de normale methoden van het echte object aanroepen. Het volgende codefragment laat zien hoe u de methode spy() gebruikt.

 List spyArrayList = spy(ArrayList.class); 

Verschil tussen Stub en Mock

Parameters Stomp Bespotten
Databron De gegevensbron van stubs is hardgecodeerd. Het is meestal nauw gekoppeld aan de testsuite. Gegevens over schijnvertoningen worden door de tests opgesteld.
Gemaakt door Stubs zijn meestal met de hand geschreven en sommige worden door tools gegenereerd. Mocks worden meestal gemaakt met behulp van de bibliotheek van derden, zoals Mockito, JMock en WireMock.
Gebruik Stubs worden voornamelijk gebruikt voor eenvoudige testsuites. Mocks worden vooral gebruikt voor grote testsuites.
Grafische gebruikersinterface (GUI) Stubs hebben geen GUI. Mocks hebben een GUI.

Hieronder volgen enkele verschillen tussen de schijnvertoning en de spion:

Parameters Bespotten Spion
Gebruik Mocks worden gebruikt om volledig nep- of dummy-objecten te maken. Het wordt voornamelijk gebruikt in grote testsuites. Spionnen worden gebruikt voor het maken van gedeeltelijke of halve nepobjecten. Net als nep worden spionnen ook gebruikt in grote testsuites.
Standaardgedrag Bij het gebruik van nepobjecten is het standaardgedrag van methoden (indien niet stubbed) niets doen (voert niets uit). Bij het gebruik van spionageobjecten is het standaardgedrag van de methoden (indien niet stubbed) het echte gedrag van de methode.

In onze vorige tutorials hebben we enkele voorbeelden besproken van stoten, spotten en spioneren. Om het verschil tussen stoten, spotten en spioneren beter te begrijpen, kunt u de voorbeelden doornemen.