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.