Mencicipi JUnit dan AspectJ


Kebetulan saja saya mengajar Metodologi RPL di sekolahan saya, dan salah dua materinya adalah tentang bagaimana Test Driven Development alias TDD dapat diterapkan sebagai salah satu bentuk Agile Programming serta sedikit memahami tentang model pemrograman berorientasi pada aspek (Aspect Oriented Programming – AOP). Agak susah memang untuk mencoba membalik paradigma yang selama ini dipahami, yaitu dari non-agile menjadi agile. Tapi inilah yang dapat saya bagikan kepada rekan-rekan di sini, yaitu kita akan belajar sedikit tentang keduanya dalam satu proyek kecil dengan menggunakan Netbeans 6.0.

Alat-alat yang dibutuhkan antara lain: JDK 1.5 ke atas, Netbeans 6.x, JUnit 3.8.x, dan AspectJ for Netbeans. Semuanya dapat di unduh di Netbeans.org. Setelah di pasang semua pada komputer Anda, kita lanjutkan untuk mencoba JUnit dan AspectJ.

Dari Netbeans, silahkan dibuat project baru dengan File – New Project. Dari dialog yang muncul, pilih Category Java, dan Project Java Application. Klik Next untuk memberi nama project Anda, misal CobaJUnitAspect. Hilangkan tanda cek pada Create Main Class, dan klik Finish. Di bagian jendela dock Projects, akan muncul icon project baru kita. Silahkan klik kanan pada nama CobaJUnitAspect, lalu pilih Properties. Pada dialog Properties, klik item Libraries, lalu pada tab Compile klik tombol Add Library, dan pilih AspectJ-Runtime, klik tombol Add Library. Kemudian klik item Packaging, pada isian Exclude From JAR File:, masukan string berikut: **/*.java,**/*.form, **/*.aj, **/*.lst,**/*.ajsym. Terakhir klik tombol OK. Yang kita lakukan tadi adalah melakukan pengaturan agar proyek kita dapat menerima AspectJ.

Kembali ke jendela utama Netbeans, di bawah item proyek CobaJUnitAspect kita, pada item Source Packages, silahkan klik Kanan, lalu pilih New > Java Package. Pada dialog pembuatan Java Package baru, silahkan isi Package Name dengan nama paket yang baru, misal: cobain, lalu klik Finish. Pada item cobain yang baru muncul di bawah item Source Packages, klik kanan, lalu pilih New > Java Class.

Sekarang kita akan coba membuat beberapa class yang akan kita uji dan kita aspek-kan. Sebetulnya yang kita lakukan ini tidak murni menerapkan TDD, karena sebetulnya TDD dimulai dengan pembuatan Test Class terlebih dahulu, baru dibuat class penerapannya, sehingga dalam penerapan metodologi TDD ini biasanya pada satu komputer terdapat 2 orang, satu sebagai programmer, dan satu lagi bisa jadi client atau test developer.

Di sini kita akan membuat 4 class, yaitu Barang, Inventori, Keranjang, dan OperasiKeranjang. (Silahkan unduh file-file java dari keempat class tersebut lalu letakkan di dalam folder src/cobain dalam folder proyek CobaJUnitAspectJ Anda). Selanjutnya kita akan mencoba membuat sebuah Test case untuk menguji class-class kita tersebut.

Pada Item Test Packages, silahkan buat sebuah Java Package baru dengan nama cobain. Kemudian, pada package cobain tersebut, silahkan klik kanan lalu pilih New > Other. Dari dialog pembuatan class baru, silahkan pilih JUnit, dan pilih itemJUnit Test, dan klik Next. Berikutnya kita diminta untuk memasukkan nama class Test, silahkan ketik misal CobaJUnitAspectTest, dan klik Finish. Jika muncul pilihan versi berapa yang akan digunakan, pilihlah JUnit 3.8.2. Sekarang di bawah package cobain pada Test Packages telah muncul sebuah file java baru yaitu CobaJUnitAspectTest yang sudah lengkap dengan templatenya. Untuk membuat sebuah pengujian, pada setiap class yang diturunkan dari TestCase, dapat didefinisikan sebuah method baru yang dimulai dengan nama “test”. Kita akan coba buat sebuah method test baru dengan nama testKeranjang. Letakkan method berikut di dalam class CobaJUnitAspectTest. Setelah setelah, cobalah jalankan dengan menekan tombol Alt-F6. Saya kira Pesan yang muncul bahwa test berhasil. Cobalah Anda ganti salah satu angka yang diharapkan pada method assertEquals(), misal dari 4 menjadi 5, lalu jalankan kembali dengan Alt-F6. Sekarang Anda akan melihat contoh hasil kegagalan pengujian.

Setelah berhasil kita uji fungsi dari method-method dalam class-class, kita lanjutkan dengan membuat sebuah Aspect class untuk dapat menambahkan potongan program dari setiap joinpoint atau aliran program yang kita definisikan. Misal, kita akan mendefinisikan pointcut untuk beberapa joinpoin berikut ini:

  • sebelum method addItem() pada class Inventori dan Keranjang, ditampilkan “Ada penambahan Item Barang : “
  • sebelum method removeItem() pada class Inventori dan Keranjang, ditampilkan “ada pengurangan Item Barang: “
  • ketika method addItem() dan removeItem() pada class Inventori dipanggil, ditampilkan: “dari Inventori”.
  • untuk method addItem() dan removeItem() pada class Keranjang ditampilkan: “dari Keranjang”.

Sebelum melakukan pembuatan Aspect class, kita siapkan terlebih dahulu sebuah method main yang akan dijalankan pertama kali pada program utama kita. Buatlah sebuah class baru bernama, misalnya, KeranjangMain yang berisi deklarasi public static void main(String[] args) seperti pada method testKeranjang kita, hanya saja dihilangkan semua method assertEquals() nya. Jika Anda jalankan langsung (F6), di jendela Output tidak akan muncul apa-apa.

Sekarang kita coba untuk memberikan aspek pada program utama tersebut. Dari item java packages dalam Source Packages, klik kanan, lalu pilih New > Other. Pada dialog pembuatan baru, kita pilih AspectJ > Empty AspectJ file, lalu klik Next. Ketikkan nama file AspectKeranjang, lalu finish. Ubahlah kode aspect yang diberikan dengan deklarasi aspect sebagai berikut :

Untuk menjalankan class Aspect kita, pada proyek Netbean kita ini harus disediakan sebuah file berekstensi lst. File ini mirip dengan file Makefile, hanya saja ini digunakan untuk Aspect. Untuk membuat file lst, caranya cukup mudah. Pada item Source Packages, klik Kanan, lalu pilih New > Other. Pada dialog pembuatan file baru, pilih AspectJ > Source Roots Lst file, lalu Next dan ketikkan rootKeranjang, dan Finish.

Sekarang kita coba jalankan dengan cara klik panah ke bawah pada icon AspectJ, lalu pilih rootKeranjang.lst (atau bisa dengan Alt-F11). Jika berhasil, kemudian dapat ditekan tombol F6 untuk menjalankan keseluruhannya. Anda akan mendapatkan pesan yang didefinisikan pada aspect sesuai dengan definisi joinpoint yang sudah kita lakukan. Untuk informasi lebih lanjut tentang AspectJ, silahkan berkunjung ke eclipse AspectJ. Selamat mencoba.

8 thoughts on “Mencicipi JUnit dan AspectJ

  1. Belajar JUnit dan AspectJ sangat menyenangkan…
    Keren banget dah…

    Wah.. ternyata bahan tes nya dari sini toh pak he5..
    Telat taunya nih..🙂

    Tutorial unit testing untuk bahasa pemrograman yang lain donk pak… Seperti PHPUnit…🙂

  2. tapi tutor di blog ni sungguh membantu saya,
    makasi lho pak buat blog nya…
    kembangin truz y pak…🙂

  3. saya mau tanya pak,,
    saya coba pake netbeans5.5, aspectj1.5, java1.5.0_9,
    semua perintahnya sudah saya lakukan, tapi ada masalah :
    1. pada bagian ‘Item Libraries-tab Compile-add Library’ tidak ada pilihan AspectJ-Runtime, jadi saya buat sendiri Library yg baru dengan menambahkan item aspectjrt dari folder AspectJ1.5 yg sudah saya instal. (paragraf 3)

    2. stelah melakukan perintah selanjutnya, muncul masalah pada saat pemberian aspek pada program utama. (paragraf 10).
    pada dialog pembuatan baru, tidak ada pilihan AspectJ, jadi saya coba buat dengan ‘Empty file’, dan saya tulis source yg ada.

    3. masalah juga ada pada saat pembuatan file lst. karena dari permasalahan diatas, maka perintah ini tidak dapat dilakukan.

    dari permasalahan diatas menyebabkan program yg saya buat tidak berhasil, yg saya mau tanyakan :

    1. apakah ada pengaruh mungkin karena AspectJ1.5-nya tidak mensupport Netbean5.5

    2. apakah ada keterkaitan karena saya tidak menginstal JUnit?? Memang apa fungsi JUnit itu sendiri??

    Mohon Jawabannya,,

    Terima Kasih,,

  4. Halo,

    bolehkah saya mendapatkan file project percobaan Anda ini?
    Kemudian, untuk menggunakan AspectJ tidak perlu adanya JUnit karena keduanya merupakan pustaka yang berbeda.

Komentar ditutup.