Buku Panduan Sahkan Mockito

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.