Unit Test: Mock Objek dengan EasyMock

11 12 2007

Unit test menurut gw adalah hal yang wajib dilakukan oleh para developer modern, karena memang tidak ada alasan untuk tidak melakukan itu. Kenapa harus melakukan unit testing?

Unit test meningkatkan kualitas kode, semakin banyak kode seharusnya bug semakin sedikit. Pada fase bug fixing misalnya, prinsip “mati satu tumbuh seribu” ini hal yg lumrah jika tidak menggunakan unit test. Kualitas kode ini dapat kita peroleh karena dengan unit test akan mudah melakukan refactoring dan penambahan fitur, kenapa? karena developer bisa confident bahwa perubahan atau penambahan fitur yang dilakukan tidak berdampak terhadap modul lain. Dengan prinsip Test Driven Development, yaitu menulis test dulu baru membuat implementasi kode, membuat setiap unit terkecil (method) dari kode akan mempunyai unit test. Sehingga ketika kode sudah banyak -unit testnya juga banyak- dan pada saat developer melakukan perubahan di satu tempat, dia akan yakin apakah test2 yang sebelumnya sukses atau gagal. Dan kalopun gagal, bugnya lgsng ketahuan -tidak pada saat testing atau UAT :P – . Hal ini tentu berdampak pada cepatnya development cycle. Walopun saya setuju pada saat awal2 akan terasa lambat kodingnya tapi ini investasi yang besar seiring bertambahnya kode aplikasi.

Menurut, andrew hunt pengarang pragmatic unit testing untuk membuat unit test yang baik harus memenuhi prinsip2 utama (A-TRIP):

  • Automatic, testing harus otomatis, setiap kali perubahan developer lgsng tahu apakah kode perubahan tsb error atau impact ke modul lain.
  • Through, testing harus mencakup seluruh kode aplikasi.
  • Repeatable, diulang berapa kali pun hasilnya tetap sama
  • Independent, tidak bergantung ke objek atau modul lain
  • Professional, menulis test harus sama bagusnya dengan menulis kode.

Pada kali ini gw akan bahas syarat yang ke empat yaitu Independent. lalu bagaimana menghilangkan dependensi terhadap objek2 lain dengan mock object. Sebenarnya ada hal2 lain kenapa harus me-mock (memalsukan) objek dalam unit test. Read the rest of this entry »