TestNG Annotations
TestNG, test otomasyonunda test akışını kontrol etmek için anotasyonlar (annotations) kullanır.
Bu anotasyonlar sayesinde testlerin hangi sırayla çalışacağı, hangi kodun testten önce/sonra çalışacağı belirlenir.
📘 Temel Anotasyonlar ve Görevleri
Section titled “📘 Temel Anotasyonlar ve Görevleri”| Annotation | Açıklama |
|---|---|
@BeforeSuite | Test suite başlamadan önce bir kez çalışır. Genellikle global ayarlar için kullanılır. |
@AfterSuite | Test suite tamamlandıktan sonra bir kez çalışır. Genellikle raporlama veya temizleme işlemleri yapılır. |
@BeforeTest | <test> etiketi içindeki testlerden önce çalışır. |
@AfterTest | <test> etiketi içindeki testler bittikten sonra çalışır. |
@BeforeClass | Test sınıfındaki ilk test metodundan önce bir kez çalışır. |
@AfterClass | Test sınıfındaki tüm test metodları tamamlandıktan sonra çalışır. |
@BeforeMethod | Her bir test metodundan önce çalışır. |
@AfterMethod | Her bir test metodundan sonra çalışır. |
@Test | Test metodunu belirtir. En sık kullanılan anotasyondur. |
⚙️ Çalışma Sırası (Execution Order)
Section titled “⚙️ Çalışma Sırası (Execution Order)”Aşağıda TestNG anotasyonlarının çalışma sırasını görebilirsiniz:
@BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @Test @AfterMethod @AfterClass @AfterTest@AfterSuite💻 Java Örneği
Section titled “💻 Java Örneği”import org.testng.annotations.*;
public class TestNGAnnotationsExample {
@BeforeSuite public void beforeSuite() { System.out.println("Before Suite - Tüm testlerden önce bir kez çalışır."); }
@AfterSuite public void afterSuite() { System.out.println("After Suite - Tüm testlerden sonra bir kez çalışır."); }
@BeforeTest public void beforeTest() { System.out.println("Before Test - Test etiketinden önce çalışır."); }
@AfterTest public void afterTest() { System.out.println("After Test - Test etiketinden sonra çalışır."); }
@BeforeClass public void beforeClass() { System.out.println("Before Class - Bu sınıftaki testlerden önce çalışır."); }
@AfterClass public void afterClass() { System.out.println("After Class - Bu sınıftaki testlerden sonra çalışır."); }
@BeforeMethod public void beforeMethod() { System.out.println("Before Method - Her test metodundan önce çalışır."); }
@AfterMethod public void afterMethod() { System.out.println("After Method - Her test metodundan sonra çalışır."); }
@Test public void testCase1() { System.out.println("Test Case 1 çalıştı."); }
@Test public void testCase2() { System.out.println("Test Case 2 çalıştı."); }}📊 Çıktı Örneği
Section titled “📊 Çıktı Örneği”Before Suite - Tüm testlerden önce bir kez çalışır.Before Test - Test etiketinden önce çalışır.Before Class - Bu sınıftaki testlerden önce çalışır.Before Method - Her test metodundan önce çalışır.Test Case 1 çalıştı.After Method - Her test metodundan sonra çalışır.Before Method - Her test metodundan önce çalışır.Test Case 2 çalıştı.After Method - Her test metodundan sonra çalışır.After Class - Bu sınıftaki testlerden sonra çalışır.After Test - Test etiketinden sonra çalışır.After Suite - Tüm testlerden sonra bir kez çalışır.🧠 Ek Bilgiler
Section titled “🧠 Ek Bilgiler”@Test(enabled = false)→ Testi devre dışı bırakır.@Test(priority = 1)→ Testlerin çalışma sırasını belirler.@Test(dependsOnMethods = "methodName")→ Başka bir metoda bağlı olarak test çalıştırılır.@Parameters→ XML dosyasından parametre almayı sağlar.@DataProvider→ Testleri veri setleriyle çoklu şekilde çalıştırmayı sağlar.
📚 Örnek: Parametreli Test
Section titled “📚 Örnek: Parametreli Test”import org.testng.annotations.Parameters;import org.testng.annotations.Test;
public class ParameterExample {
@Test @Parameters("username") public void loginTest(String username) { System.out.println("Kullanıcı adı: " + username); }}<suite name="Parametreli Test Suite"> <test name="Login Testi"> <parameter name="username" value="mehmet123"/> <classes> <class name="ParameterExample"/> </classes> </test></suite>🧾 Özet
Section titled “🧾 Özet”TestNG anotasyonları, testlerin sırasını, bağımlılıklarını ve yapılandırmasını kontrol etmek için güçlü bir mekanizma sağlar.
Doğru kullanıldığında, testlerin bakımı kolaylaşır ve tekrar kullanılabilirliği artar.