Kelas dan Kaedah Akhir Mock dengan Mockito

1. Gambaran keseluruhan

Dalam artikel pendek ini, kita akan memfokuskan kepada cara mengejek kelas dan kaedah akhir - menggunakan Mockito.

Seperti artikel lain yang difokuskan pada kerangka Mockito (seperti Mockito Verify, Mockito When / Then, dan Mockito's Mock Methods) kami akan menggunakan kelas MyList yang ditunjukkan di bawah sebagai kolaborator dalam kes ujian.

Kami akan menambahkan kaedah baru untuk tutorial ini:

public class MyList extends AbstractList { final public int finalMethod() { return 0; } }

Dan kami juga akan memperluaskannya dengan subkelas terakhir :

public final class FinalList extends MyList { @Override public int size() { return 1; } } 

2. Konfigurasikan Mockito untuk Kaedah dan Kelas Akhir

Sebelum Mockito dapat digunakan untuk mengejek kelas dan kaedah akhir, ia perlu dikonfigurasi.

Kita perlu menambahkan fail teks ke direktori src / test / resources / mockito-extensions projek bernama org.mockito.plugins.MockMaker dan menambah satu baris teks:

mock-maker-inline 

Mockito memeriksa direktori sambungan untuk fail konfigurasi semasa dimuat. Fail ini memungkinkan mengejek kaedah dan kelas akhir.

3. Mengejek Kaedah Akhir

Setelah Mockito dikonfigurasi dengan betul, kaedah terakhir dapat diejek seperti yang lain :

@Test public void whenMockFinalMethodMockWorks() { MyList myList = new MyList(); MyList mock = mock(MyList.class); when(mock.finalMethod()).thenReturn(1); assertNotEquals(mock.finalMethod(), myList.finalMethod()); } 

Dengan membuat contoh konkrit dan contoh tiruan MyList , kita dapat membandingkan nilai yang dikembalikan oleh kedua versi finalM Method () dan mengesahkan bahawa tiruan disebut.

4. Mengejek Kelas Akhir

Mengejek kelas akhir semudah mengejek kelas lain:

@Test public void whenMockFinalClassMockWorks() { FinalList finalList = new FinalList(); FinalList mock = mock(FinalList.class); when(mock.size()).thenReturn(2); assertNotEquals(mock.size(), finalList.size()); } 

Sama seperti ujian di atas, kami membuat contoh konkrit dan contoh tiruan dari kelas terakhir kami, mengejek kaedah dan mengesahkan bahawa contoh olok-olok berkelakuan berbeza.

5. Kesimpulan

Dalam tutorial ringkas ini, kami membahas cara mengejek kelas dan kaedah akhir dengan Mockito dengan menggunakan pelanjutan Mockito.

Contoh penuh, seperti biasa, boleh didapati di GitHub.