Setup dan Cleanup: @BeforeEach dan @AfterEach

Kadang sebelum test jalan, kita perlu setup data. Setelah test selesai, kita perlu cleanup.

@BeforeEach — Jalankan sebelum setiap @Test

private List<String> list;

@BeforeEach
public void setup() {
    list = new ArrayList<>();  // Setup sebelum setiap test
    System.out.println("Setup: List created");
}

@Test
public void testAdd() {
    list.add("item");
    assertEquals(1, list.size());
}

@AfterEach — Jalankan setelah setiap @Test

@AfterEach
public void cleanup() {
    list = null;  // Cleanup setelah setiap test
    System.out.println("Cleanup: List cleared");
}

Urutan Eksekusi

Jika ada 2 test methods:

Test 1:
  @BeforeEach setup()
  @Test testAdd()
  @AfterEach cleanup()

Test 2:
  @BeforeEach setup()
  @Test testRemove()
  @AfterEach cleanup()

Output:

Setup: List created
Cleanup: List cleared

Setup: List created
Cleanup: List cleared

Kenapa Perlu @BeforeEach dan @AfterEach?

Supaya setiap test punya fresh state (state bersih). Contoh:

@Test
public void testAdd() {
    list.add("Apple");  // list sekarang punya 1 item
}

@Test
public void testRemove() {
    // Jika gak ada @BeforeEach, list masih punya "Apple" dari test 1!
    // Ini akan corrupt test 2
}

Dengan @BeforeEach, setiap test mulai dengan list kosong.