Mockito Verify Cookbook

1. Panoramica

Questo libro di cucina illustra come utilizzare la verifica Mockito in una varietà di casi d'uso.

Il formato del ricettario è incentrato sull'esempio e pratico, non sono necessari dettagli e spiegazioni estranee.

Prenderemo in giro una semplice implementazione dell'elenco :

public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 0; } } 

2. Il ricettario

verifica la semplice invocazione su mock

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList).size();

verifica il numero di interazioni con il mock

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, times(1)).size();

verificare che non si sia verificata alcuna interazione con l'intera simulazione

List mockedList = mock(MyList.class); verifyZeroInteractions(mockedList);

verificare che non si sia verificata alcuna interazione con un metodo specifico

List mockedList = mock(MyList.class); verify(mockedList, times(0)).size();

verificare che non vi siano interazioni impreviste: dovrebbe fallire:

List mockedList = mock(MyList.class); mockedList.size(); mockedList.clear(); verify(mockedList).size(); verifyNoMoreInteractions(mockedList);

verificare l'ordine delle interazioni

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

verificare che non si sia verificata un'interazione

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, never()).clear();

verificare che un'interazione si sia verificata almeno un certo numero di volte

List mockedList = mock(MyList.class); mockedList.clear(); mockedList.clear(); mockedList.clear(); verify(mockedList, atLeast(1)).clear(); verify(mockedList, atMost(10)).clear();

verifica l'interazione con l'argomento esatto

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add("test");

verifica l'interazione con flessibile / qualsiasi argomento

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add(anyString());

verificare l'interazione utilizzando l'acquisizione di argomenti

List mockedList = mock(MyList.class); mockedList.addAll(Lists. newArrayList("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class); verify(mockedList).addAll(argumentCaptor.capture()); List capturedArgument = argumentCaptor.
    
      getValue(); assertThat(capturedArgument, hasItem("someElement"));
    

3. Conclusione

Questo formato è un esperimento - sto pubblicando alcuni dei miei libri di cucina di sviluppo interno su un determinato argomento - su Google Guava, Hamcrest e ora Mockito . L'obiettivo è avere queste informazioni prontamente disponibili online e aggiungerle ogni volta che mi imbatto in un nuovo esempio utile.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata su GitHub : questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.