İçeriğe geç

TestNG dependsOnMethods Özelliği

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.


@Test(dependsOnMethods = {"methodAdi"})
public void testMethod() {
// test adımları
}
  • dependsOnMethods içine bağımlı olunacak metodun adını (veya adlarını) string olarak yazarsınız.
  • Eğer belirtilen metod başarısız olursa (@Test fail olursa), bağlı olan test atlanır (skipped) olarak işaretlenir.

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ı.");
}
}
  1. loginTest() çalışır.
  2. Eğer başarılıysa, dashboardTest() çalışır.
  3. dashboardTest() başarılıysa, logoutTest() çalışır.

Eğer loginTest() başarısız olursa, dashboardTest() ve logoutTest() skipped olur.


  • 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).


Örneğin bir e-ticaret sitesinde test senaryonuz şu adımlardan oluşsun:

  1. Giriş yap
  2. Ürünü sepete ekle
  3. 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ı.");
}
}

➡️ login()addToCart()checkout()

Eğer login() başarısız olursa, diğer iki test atlanır.


ÖzellikAçıklama
dependsOnMethodsBir testin, başka bir test metoduna bağlı olduğunu belirtir.
Çalışma KoşuluBağlı olunan test(ler) başarılı olmalı.
Hata DurumuBaşarısız test varsa, bağlı testler skip edilir.
Kullanım AlanıTest sıralamasını ve bağımlılığı yönetmek.

  • dependsOnMethods sadece metot bazında çalışır.
  • Eğer tüm testler belirli bir setup işlemine bağlıysa, @BeforeMethod veya @BeforeClass kullanmak genellikle daha uygundur.