Mockito Verifikasi Cookbook

1. Ikhtisar

Buku masak ini menggambarkan cara menggunakan verifikasi Mockito dalam berbagai kasus penggunaan.

The format buku masak adalah contoh terfokus dan praktis - tidak ada rincian yang asing dan penjelasan yang diperlukan.

Kami akan mengejek implementasi daftar sederhana :

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

2. Buku Resep

verifikasi pemanggilan sederhana di palsu

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

verifikasi jumlah interaksi dengan tiruan

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

verifikasi tidak ada interaksi dengan keseluruhan tiruan yang terjadi

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

verifikasi tidak ada interaksi dengan metode tertentu yang terjadi

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

pastikan tidak ada interaksi yang tidak terduga - ini seharusnya gagal:

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

verifikasi 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();

verifikasi bahwa interaksi tidak terjadi

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

memverifikasi bahwa interaksi telah terjadi setidaknya beberapa kali

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

verifikasi interaksi dengan argumen yang tepat

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

verifikasi interaksi dengan fleksibel / argumen apa pun

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

verifikasi interaksi menggunakan penangkapan argumen

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. Kesimpulan

Format ini adalah eksperimen - Saya menerbitkan beberapa buku masak pengembangan internal saya tentang topik tertentu - di Google Guava, Hamcrest, dan sekarang Mockito . Tujuannya adalah agar informasi ini tersedia secara online - dan menambahkannya setiap kali saya menemukan contoh baru yang berguna.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di GitHub - ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankan apa adanya.