Mockito - Mocking Framework
Pendahuluan
Lagi-lagi tentang unit test..
Dan tentang Mockito.
Mockito merupakan Mocking framework yang terkenal di lingkungan bahasa Java dan sekitarnya.
Mocking framework ini berbeda dengan Testing framework.
Akan tetapi saling melengkapi.
Dan merupakan pasangan yang serasi..ehem..ehem..
Apa perbedaannya ?
Testing Framework membuat lingkungan yang memudahkan kita dalam membuat unit-test.
Termasuk didalamnya ada Fixtures, Test Suites, Test Runner, Test Classes.
Pokoke banyak class-class nya yang dengannya kita bisa menambahkan anotasi sbb :
- @Test
- @BeforeEach
- @ParameterizedTest
- dll
Sedangkan Mocking Framework digunakan untuk membuat objek pengganti dependency dari class yang kita mau test.
Object pengganti itu bisa berupa Stub, Mock, Spy, dll.
Pengenalan mengenai objek pengganti, dibahas di Test Double
Mocking Framework ini membuat kita bisa menggunakan anotasi sbb :
- @Mock
- @InjectMock
- @Spy
- dll
Dengan Mocking Framework, maka Software Engineer bisa fokus dalam membuat unit testingnya, dan bisa secara mudah melakukan isolasi class/object yang terkait dengan bantuan Mocking Framework ini.
Jadi 2 buah framework diatas merupakan pasangan yang mesti bahu-membahu ketika kita membuat sebuah unit testing.
- Testing Framework, sebagai library untuk mempersiapkan environment testingnya.
- Mocking Framework, sebagai library untuk memisalkan atau memanipulasi objek-objek yang mau kita test.
Mockito
Mockito merupakan salah satu dari Mocking Framework.
Dan merupakan Mocking Framework yang paling banyak digunakan secara de facto di dunia pemrograman Java.
Pesaingnya juga banyak , seperti :
- JMock
- EasyMock
- PowerMock
- dll
Dan kegunaannya juga sama, yaitu untuk memisalkan atau memanipulasi objek yang mau kita test dan dependencynya.
Perbedaan dengan library lain ?
Sebelumnya di Mocking Framework lainnya, seperti JMock atau EasyMock, mocking dilakukan dengan cara :
- expect
- run
- verify
Dimana kita harus mempersiapkan ekpektasi dari running method dari class mock nya, kemudian menjalankan method di class yang mau kita test, lalu melakukan verifikasi behaviournya.
Jika ternyata running method yang kita mau expect tidak di-invoke, maka akan terjadi error.
Sementara di Mockito, tidak diperlukan ekspektasi running method di awal mocking, tetapi cukup melakukan verify setelah class yang mau kita test dijalankan.
Boleh dibilang Mockito menerapkan :
- run
- verify
saja.
Hal ini mempermudah dari sisi persiapan object sebelum dilakukan testing terhadap class yang kita mau test.
Tidak perlu persiapan objek untuk diexpect running method nya.
Lebih natural dari sisi class mana saja yang kita mau test.