Mockito Controleer het kookboek

1. Overzicht

Dit kookboek illustreert hoe u Mockito verifieert in verschillende gebruikssituaties.

De formaat van het kookboek is voorbeeldgericht en praktisch - geen externe details en uitleg nodig.

We zullen zijn een simpele lijst bespotten implementatie:

openbare klasse MyList breidt AbstractList uit {@Override public String get (final int index) {return null; } @Override public int size () {return 0; }} 

2. Het kookboek

verifieer eenvoudige aanroep op mock

Lijst mockedList = mock (MyList.class); mockedList.size (); verifieer (mockedList) .size ();

verifieer het aantal interacties met mock

Lijst mockedList = mock (MyList.class); mockedList.size (); verifieer (mockedList, times (1)). size ();

controleer of er geen interactie met de hele mock heeft plaatsgevonden

Lijst mockedList = mock (MyList.class); verifieerZeroInteractions (mockedList);

controleer of er geen interactie met een specifieke methode heeft plaatsgevonden

Lijst mockedList = mock (MyList.class); verifieer (mockedList, times (0)). size ();

controleer of er geen onverwachte interacties zijn - dit zou moeten mislukken:

Lijst mockedList = mock (MyList.class); mockedList.size (); mockedList.clear (); verifieer (mockedList) .size (); verifiërenNoMoreInteractions (mockedList);

controleer de volgorde van interacties

Lijst mockedList = mock (MyList.class); mockedList.size (); mockedList.add ("een parameter"); mockedList.clear (); InOrder inOrder = Mockito.inOrder (mockedList); inOrder.verify (mockedList) .size (); inOrder.verify (mockedList) .add ("een parameter"); inOrder.verify (mockedList) .clear ();

controleer of er geen interactie heeft plaatsgevonden

Lijst mockedList = mock (MyList.class); mockedList.size (); verifieer (mockedList, never ()). clear ();

controleer of een interactie ten minste een bepaald aantal keren heeft plaatsgevonden

Lijst mockedList = mock (MyList.class); mockedList.clear (); mockedList.clear (); mockedList.clear (); verifieer (mockedList, atLeast (1)). clear (); verifiëren (mockedList, atMost (10)). clear ();

verifieer interactie met exact argument

Lijst mockedList = mock (MyList.class); mockedList.add ("test"); verifieer (mockedList) .add ("test");

verifieer interactie met flexibel / elk argument

Lijst mockedList = mock (MyList.class); mockedList.add ("test"); verifieer (mockedList) .add (anyString ());

verifieer de interactie met het vastleggen van argumenten

Lijst mockedList = mock (MyList.class); mockedList.addAll (Lists. newArrayList ("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass (List.class); verifiëren (mockedList) .addAll (argumentCaptor.capture ()); Lijst captureArgument = argumentCaptor. getValue (); assertThat (CapturedArgument, hasItem ("someElement"));

3. Conclusie

Dit formaat is een experiment - ik publiceer een aantal van mijn kookboeken voor interne ontwikkeling over een bepaald onderwerp - op Google Guava, Hamcrest en nu Mockito. Het doel is om deze informatie direct online beschikbaar te hebben - en om er iets aan toe te voegen wanneer ik een nieuw bruikbaar voorbeeld tegenkom.

De implementatie van al deze voorbeelden en codefragmenten is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.