Sunday, June 15, 2014

Junit in ADF

Junit adalah salah satu framework yang berguna untuk menguji method method tertentu di java. Pada kasus ini, saya akan menjelaskan penggunaan Junit di ADF. Sebelumnya saya akan menjelaskan cara mengexport library junit di adf dan cara membuat junit class di ADF. Pertama kita open jdev, jdev yang saya gunakan bertipe jdev 11g. Langkah pertama klik help, dan pilih check for updates.


Pilih official oracle extensions and updates, dan klik next


Klik next dan finish, dan junit telah terinstall di jdev. sekarang saya membuat sebuah program sangat sederhana, yaitu program kalkulator, dimana terdapat method tambah, kurang, kali, bagi.

       
package java;

package java;

public class kalkulator {
    private int tambah;
    private int kurang;
    private int bagi;
    private int kali;
    private static int tetap = 10;
    
    public void setTambah(int tambah) {
        this.tambah = tambah + tetap;
    }
    public void setKurang(int kurang) {
        this.kurang = kurang - tetap;
    }
    public void setBagi(int bagi) {
        this.bagi = bagi / tetap;
    }
    public void setKali(int kali) {
        this.kali = kali * tetap;
    }
    
    public int getTambah() {
        return tambah;
    }
    public int getKurang() {
        return kurang;
    }
    public int getKali() {
        return kali;
    }
    public int getBagi() {
        return bagi;
    }  
}

       
 

Dan sekarang saatnya membuat jUnit. Create new project, pilih Unit Test, dan klik Test Case, dengan nama kalkulatorTest, jangan lupa untuk memberikan tambahan nama Test di class yang dibuat.
 

Kita dapat melihat di ADF, ada beberapa method yang langsung dapat dibuat, berguna untuk mempermudah programmer agar tidak menulis method berulang ulang. Saya akan menjelaskan setiap method yang ada:

1. SetUp, ADF akan membuat method setUp dimana memiliki annotations @Before
2. TearDown, ADF akan membuat method tearDown dimana memiliki annotations @After
3. SetUpBeforeClass, ADF akan membuat method setUpBeforeClass dimana memiliki annotations @BeforeClass
4. TearDownAfterClass,ADF akan membuat method tearDownBeforeClass dimana memiliki annotations @AfterClass
5. public static void main, ADF akan membuat staticvoidmain
6. Maintain Compatability with older TestRunner,akan membuat method dimana akan mengembalikan hasil unit test ke classnya.

Disini, saya hanya memilih angka 1 sampai 4. Sebelumnya saya akan menjelaskan apa itu annotations di tiap method yang dibuat di atas.
1. @Before dijalankan sebelum sebuah @Test di jalankan
2. @After akan dijalankan setelah @Test di proses
3. @BeforeClass akan dijalankan sebelum class di proses, biasanya ini digunakan untuk sebuah koneksi database, apabila method yang akan di uji akan menggunakan database
4. @AfterClass akan dijalankan setelah class di proses, pada annotations ini, biasanya di gunakan untuk disconnect di suatu database.

Saya sebelumnya juga mau menjelaskan tentang metode assert. Assert adalah sebuah metode yang berguna untuk ,menguji bahwa setiap method yang dibuat berjalan dengan sesuai dengan harapan atau tidak, apabila tidak, maka UnitTest akan memunculkan error saat di run atau di compile. Jenis jenis Assert:
1. AssertEquals, untuk mengecek apakah keluaran code sesuai dengan yang di harapkan
2. AssertFalse, untuk mengecek bahwa code yang di uji mempunyai value yang tidak sesuai dengan yang di harapkan
3. AssertNotNull, untuk menguji bahwa keluaran dari code tidak null
4. AssertNotSame, untuk menguji bahwa keluaran code tidak sesuai dengan yang di ekspektasikan
5. AssertNull, untuk mengetahui apakah value dari method yang dibuat adalah null
6. AssertTrue, untuk mengetahui bahwa value bernilai sesuai dengan yang di harapkan.

Mari langsung praktekkan, agar mengetahui fungsi dari Annotations dan Assert yang saya maksud. Selamat mencoba :)
       

package unitTest;

import java.kalkulator;

import org.junit.After;
import org.junit.AfterClass;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import sun.font.TrueTypeFont;

public class UnitTest {
    kalkulator test = new kalkulator();
    @Before
    public void setUp() throws Exception {
        System.out.println("ini adalah awal sebelum di proses");
        test.setBagi(0);
        test.setKali(0);
        test.setKurang(0);
        test.setTambah(0);
    }
    
        @After
        public void tearDown() throws Exception {
            System.out.println("ini adalah awal sesudah di proses");
        }
    
        @BeforeClass
        public static void setUpBeforeClass() throws Exception {
            System.out.println("ini adalah awal sebelum dibuat class");
        }
    
        @AfterClass
        public static void tearDownAfterClass() throws Exception {
            System.out.println("ini dijalankan setelah semua class di proses");
        }
    
        @Test
        public void testTambah() {
            
            test.setTambah(10);
            assertEquals("apakah sesuai dengan harapan", 20, test.getTambah());
        }
        
        @Test
        public void testKurang() {
            test.setKurang(10);
            assertTrue("cek bahwa nilai akan nol bila dikurang", test.getKurang()==0);
        }
        @Test
        public void testNotNull() {
            assertNull("Test bukan null", test.getTambah());
        }
        @Test
        public void testNotSame() {
            assertNotSame("cek apakah nilainya sama", 300 , test.getKali());
        }
}

       
 


No comments:

Post a Comment