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.