TestNG dependsOnMethods Özelliği
🎯 Amaç
Section titled “🎯 Amaç”dependsOnMethods özelliği, bir test metodunun başka bir test metodunun başarıyla tamamlanmasına bağlı olduğunu belirtmek için kullanılır.
Bu sayede testler bağımlı çalışma sırasına göre yürütülür.
🧩 Kullanım Yapısı
Section titled “🧩 Kullanım Yapısı”@Test(dependsOnMethods = {"methodAdi"})public void testMethod() { // test adımları}dependsOnMethodsiçine bağımlı olunacak metodun adını (veya adlarını) string olarak yazarsınız.- Eğer belirtilen metod başarısız olursa (
@Testfail olursa), bağlı olan test atlanır (skipped) olarak işaretlenir.
🧠 Örnek Senaryo
Section titled “🧠 Örnek Senaryo”import org.testng.Assert;import org.testng.annotations.Test;
public class DependsOnMethodsExample {
@Test public void loginTest() { System.out.println("Kullanıcı giriş yaptı."); Assert.assertTrue(true); // Başarılı test }
@Test(dependsOnMethods = {"loginTest"}) public void dashboardTest() { System.out.println("Dashboard kontrol edildi."); }
@Test(dependsOnMethods = {"dashboardTest"}) public void logoutTest() { System.out.println("Kullanıcı çıkış yaptı."); }}🧾 Çalışma Sırası:
Section titled “🧾 Çalışma Sırası:”loginTest()çalışır.- Eğer başarılıysa,
dashboardTest()çalışır. dashboardTest()başarılıysa,logoutTest()çalışır.
Eğer loginTest() başarısız olursa, dashboardTest() ve logoutTest() skipped olur.
⚠️ Dikkat Edilmesi Gerekenler
Section titled “⚠️ Dikkat Edilmesi Gerekenler”-
Birden fazla metoda bağımlı olunabilir:
@Test(dependsOnMethods = {"methodA", "methodB"})public void methodC() {System.out.println("methodC, A ve B'ye bağlıdır.");} -
Döngüsel bağımlılıklar (A → B → A gibi) tanımlarsanız, TestNG hata verir.
-
Bağımlı metotlar başarısız olursa, bağlı testler çalıştırılmaz (skip edilir).
🧮 Gerçek Hayat Kullanımı
Section titled “🧮 Gerçek Hayat Kullanımı”Örneğin bir e-ticaret sitesinde test senaryonuz şu adımlardan oluşsun:
- Giriş yap
- Ürünü sepete ekle
- Siparişi tamamla
public class ECommerceTests {
@Test public void login() { System.out.println("Kullanıcı giriş yaptı."); }
@Test(dependsOnMethods = "login") public void addToCart() { System.out.println("Ürün sepete eklendi."); }
@Test(dependsOnMethods = "addToCart") public void checkout() { System.out.println("Sipariş tamamlandı."); }}Çalışma sırası:
Section titled “Çalışma sırası:”➡️ login() → addToCart() → checkout()
Eğer login() başarısız olursa, diğer iki test atlanır.
💡 Özet
Section titled “💡 Özet”| Özellik | Açıklama |
|---|---|
dependsOnMethods | Bir testin, başka bir test metoduna bağlı olduğunu belirtir. |
| Çalışma Koşulu | Bağlı olunan test(ler) başarılı olmalı. |
| Hata Durumu | Başarısız test varsa, bağlı testler skip edilir. |
| Kullanım Alanı | Test sıralamasını ve bağımlılığı yönetmek. |
🔍 Ek Bilgi
Section titled “🔍 Ek Bilgi”dependsOnMethodssadece metot bazında çalışır.- Eğer tüm testler belirli bir setup işlemine bağlıysa,
@BeforeMethodveya@BeforeClasskullanmak genellikle daha uygundur.