Pengujian unit dengan JUnit

Pengantar Pengujian di Java

Maria Milusheva

Senior Software Engineer

Unit testing - definisi

Dua konsep kunci:

Unit - bagian terkecil yang dapat diuji dari aplikasi, mis. sebuah method

Unit testing - Pengujian yang memverifikasi kebenaran satu "unit" kode secara terpisah dari bagian aplikasi lain

Pengantar Pengujian di Java

Unit testing berfokus pada detail

Catatan:

  • Unit testing membahas logika kecil, bukan gambaran besar

  • Jenis pengujian lain berfokus pada gambaran besar (mis. integrasi)

  • JUnit dinamai demikian karena kasus utamanya adalah unit testing

Grafik yang menggambarkan hubungan intuitif antara unit test dan kode produksi

Pengantar Pengujian di Java

Jenis pengujian - ringkasan singkat

  • Di kursus ini kita membahas terutama pengujian unit dan integrasi
  • Namun ada banyak jenis pengujian!

Diagram pengujian perangkat lunak termasuk pengujian fungsional seperti unit testing, dan nonfungsional seperti uji kegunaan

Pengantar Pengujian di Java

Jenis pengujian - ringkasan singkat

  • Di kursus ini kita membahas terutama pengujian unit dan integrasi
  • Namun ada banyak jenis pengujian!

Diagram pengujian perangkat lunak termasuk pengujian fungsional seperti unit testing, dan nonfungsional seperti uji kegunaan. Versi ini memberi lingkaran pada unit dan integrasi

Pengantar Pengujian di Java

Sintaks JUnit: assertTrue() dan assertFalse()

  • assertTrue() memeriksa pernyataan bernilai true:
List<String> list = new ArrayList<>();

assertTrue(list.isEmpty()); // Tidak error
  • assertFalse() memeriksa kebalikannya:
List<String> list = new ArrayList<>();
list.add("A");

assertFalse(list.isEmpty()); // Tidak error
Pengantar Pengujian di Java

assertNull() dan assertNotNull()

Variabel null dapat memicu NullPointerException!

  • Assertion untuk memeriksa variabel bernilai null atau tidak — assertNull() dan assertNotNull()

  • Kasus umum: memeriksa nilai yang diambil tidak null

Map<String, Integer> catalogue = new HashMap<>();

catalogue.put("item1", 10);

// Tidak error
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Pengantar Pengujian di Java

Menguji exception

Misalkan kita ingin memastikan ArrayIndexOutOfBoundsException dilempar:

public String getIndex(String[] array, int index) {
    return array[index];
}

JUnit menyediakan beberapa cara untuk melakukannya!

Pengantar Pengujian di Java

assertInstanceOf()

  • JUnit menyediakan assertThrows(), tetapi memakai sintaks Java lanjut (ekspresi lambda)

  • Dapat memakai assertInstanceOf() seperti ini:

try {
    getIndex(new String[]{}, 4);
} catch (Exception e) {
    // Berikan kelas exception yang diharapkan dan objek exception-nya  
    assertInstanceOf(ArrayIndexOutOfBoundsException.class, e); 
}
1 https://www.baeldung.com/junit-assert-exception
Pengantar Pengujian di Java

Menamai unit test

  • Proyek tipikal memuat ratusan unit test

  • Harus ringan dan mudah dipahami

  • Gunakan nama informatif agar mudah terlihat apa yang salah saat gagal

Contoh: methodUnderTest_expectedBehavior_conditions()

1 https://dzone.com/articles/7-popular-unit-test-naming?fromrel=true
Pengantar Pengujian di Java

Ayo berlatih!

Pengantar Pengujian di Java

Preparing Video For Download...