Java
@BeforeEach ve @AfterEach
@BeforeEach ve @AfterEach ile setup öğrenirsin.
@BeforeEach ve @AfterEach
Her test yönteminden önce çalışacak kodu @BeforeEach, sonrasında çalışacak kodu @AfterEach ile işaretlersin. Bu yöntemler ortak kurulum ve temizlik için kullanılır.
import org.junit.jupiter.api.*;
class CartTest {
List<String> cart;
@BeforeEach
void setup() { cart = new ArrayList<>(); }
@AfterEach
void cleanup() { cart.clear(); }
}
Böylece her test bağımsız çalışır; önceki testin yan etkisi etkilemez. Kurulum tek yerde toplanır ve tekrar önlenir. Bu, testlerin hızlı ve güvenilir olmasını sağlar.
@BeforeAll ile sınıf düzeyinde kurulum
Ağır kaynaklar (veritabanı bağlantısı, dosya) bir kez açılacaksa @BeforeAll kullanılır. Bu yöntem static olmalıdır; çünkü çerçeve sınıf başına tek bir kez çağırır.
@BeforeAll
static void openDatabase() {
// bağlantı bir kez açılır
}
@AfterAll
static void closeDatabase() {
// bağlantı bir kez kapatılır
}
Bu, test süresini kısaltır. Ancak testlerin birbirine bağımlı olmamasına dikkat et; aksi halde sıra değişince hatalar oluşur. Genelde @BeforeEach tercih edilir.
Uygulama Cart testinde @BeforeEach kullan
Bir CartTest sınıfı yaz. List<String> cart alanı tanımla. @BeforeEach ile işaretli setup yönteminde cart = new ArrayList<>() yap. @Test ile testAdd yöntemi yaz; cart.add("apple") çağır ve assertEquals(1, cart.size()) ile doğrula. Bir main metodu ekle, sepete bir öğe ekle ve size() sonucunu yazdır.
Örnek çözümü göster
import org.junit.jupiter.api.*;
import java.util.*;
class CartTest {
List<String> cart;
@BeforeEach
void setup() {
cart = new ArrayList<>();
}
@Test
void testAdd() {
cart.add("apple");
assertEquals(1, cart.size());
}
public static void main(String[] args) {
CartTest t = new CartTest();
t.setup();
t.cart.add("apple");
System.out.println(t.cart.size());
}
}
Kendini test et
-
Lifecycle annotation'larını eşleştir
- @BeforeEach
- Her testten önce
- @AfterEach
- Her testten sonra
- @BeforeAll
- Sınıftan önce (static)
- @AfterAll
- Sınıftan sonra (static)
-
BeforeAll yöntemini tamamla
@BeforeAll
____ void openResource() {
// tek seferlik kurulum
}
Cevabı göster
@BeforeAll
static void openResource() {
// tek seferlik kurulum
}
-
@BeforeEach ile @BeforeAll arasındaki fark nedir?
- BeforeEach her testten önce, BeforeAll sınıftan önce çalışır
- BeforeAll her testten önce, BeforeEach sınıftan önce çalışır
- İkisi de aynıdır, sadece adları farklıdır
- BeforeAll yalnızca hata durumunda çalışır
Cevabı göster
BeforeEach her testten önce, BeforeAll sınıftan önce çalışır — BeforeEach her testten önce, BeforeAll sınıftan önce (bir kez) çalışır.
Sıradaki ders: @ParameterizedTest