1. Gambaran keseluruhan
Buku masakan ini menggambarkan cara menggunakan pengesahan Mockito dalam pelbagai kes penggunaan.
The format buku masakan adalah contoh tertumpu dan praktikal - tiada maklumat luaran dan penjelasan yang diperlukan.
Kami akan mengejek pelaksanaan senarai sederhana :
public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 0; } }
2. Buku Masakan
mengesahkan permohonan mudah pada ejekan
List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList).size();
mengesahkan bilangan interaksi dengan ejekan
List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, times(1)).size();
mengesahkan tidak berlaku interaksi dengan keseluruhan ejekan
List mockedList = mock(MyList.class); verifyZeroInteractions(mockedList);
mengesahkan tidak berlaku interaksi dengan kaedah tertentu
List mockedList = mock(MyList.class); verify(mockedList, times(0)).size();
sahkan bahawa tidak ada interaksi yang tidak dijangka - ini akan gagal:
List mockedList = mock(MyList.class); mockedList.size(); mockedList.clear(); verify(mockedList).size(); verifyNoMoreInteractions(mockedList);
mengesahkan urutan interaksi
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();
sahkan interaksi belum berlaku
List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, never()).clear();
mengesahkan bahawa interaksi telah berlaku sekurang-kurangnya beberapa kali
List mockedList = mock(MyList.class); mockedList.clear(); mockedList.clear(); mockedList.clear(); verify(mockedList, atLeast(1)).clear(); verify(mockedList, atMost(10)).clear();
mengesahkan interaksi dengan hujah yang tepat
List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add("test");
mengesahkan interaksi dengan fleksibel / sebarang hujah
List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add(anyString());
mengesahkan interaksi menggunakan penangkapan hujah
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. Kesimpulannya
Format ini adalah eksperimen - saya menerbitkan beberapa buku masakan pembangunan dalaman saya pada topik tertentu - di Google Jambu, Hamcrest dan sekarang Mockito . Tujuannya adalah agar maklumat ini tersedia dalam talian - dan menambahkannya setiap kali saya menemui contoh berguna baru.
Pelaksanaan semua contoh dan coretan kod ini boleh didapati di GitHub - ini adalah projek berasaskan Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.