Best Practices

1. Naming Convention

Nama test method harus jelas apa yang di-test:

// ❌ Buruk
@Test
public void test1() { }

@Test
public void checkIt() { }

// ✅ Baik
@Test
public void testAddWithPositiveNumbers() { }

@Test
public void testDivideByZeroThrowsException() { }

Format: test[Method/Feature][Scenario]

2. One Assertion Per Test (jika bisa)

// ❌ Kurang ideal - multiple assertions di satu test
@Test
public void testCalculator() {
    assertEquals(5, calc.add(2, 3));
    assertEquals(2, calc.subtract(5, 3));
    assertEquals(12, calc.multiply(3, 4));
}

// ✅ Lebih baik - satu assertion per test
@Test
public void testAddReturnsCorrectSum() {
    assertEquals(5, calc.add(2, 3));
}

@Test
public void testSubtractReturnsCorrectDifference() {
    assertEquals(2, calc.subtract(5, 3));
}

3. Arrange-Act-Assert Pattern

Struktur setiap test dengan jelas:

@Test
public void testCalculation() {
    // ARRANGE: Setup data
    int a = 2;
    int b = 3;
    Calculator calc = new Calculator();
    
    // ACT: Execute method yang di-test
    int result = calc.add(a, b);
    
    // ASSERT: Check hasil
    assertEquals(5, result);
}

4. Test Both Success dan Failure Cases

@Test
public void testAddWithPositiveNumbers() {  // Success case
    assertEquals(5, calc.add(2, 3));
}

@Test
public void testAddWithNegativeNumbers() {  // Edge case
    assertEquals(-1, calc.add(-2, 1));
}

@Test
public void testDivideByZero() {  // Failure case
    assertThrows(IllegalArgumentException.class, () -> calc.divide(10, 0));
}

Kesimpulan

Unit testing dengan JUnit adalah cara cerdas untuk memastikan code lo berfungsi dengan benar. Langkah-langkahnya simple:

  1. Setup project dengan Maven
  2. Buat test class di folder src/test/java/
  3. Tulis test methods dengan @Test
  4. Gunakan assertion (assertEquals, assertTrue, assertThrows)
  5. Run tests dan lihat hasilnya

Setelah terbiasa dengan JUnit, lo siap untuk belajar @Mock (Mockito) untuk testing yang lebih advanced!

Happy testing!


Butuh bantuan untuk Unit Testing komponen java projectmu? Langsung aja kontak tim kita disini….