TestNG XML File
TestNG XML File, bir projede yer alan testleri gruplamak, sıralamak, parametre geçmek, ve parallel testler gibi gelişmiş özellikleri yönetmek için kullanılan yapılandırma dosyasıdır.
Genellikle testng.xml adıyla proje kök dizininde bulunur.
🎯 XML Dosyasının Amacı
Section titled “🎯 XML Dosyasının Amacı”- Hangi test sınıflarının çalıştırılacağını belirler
- Testleri gruplayarak yönetimi kolaylaştırır
@Parametersanotasyonu ile parametre gönderilmesini sağlar- Paralel veya belirli sıra ile test çalıştırma imkânı tanır
🧱 Temel XML Yapısı
Section titled “🧱 Temel XML Yapısı”Aşağıda en basit testng.xml dosyası örneği yer almaktadır:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="MySuite"> <test name="MyTest"> <classes> <class name="testcases.LoginTest" /> <class name="testcases.HomePageTest" /> </classes> </test></suite>🔍 Açıklama:
Section titled “🔍 Açıklama:”| Etiket | Anlamı |
|---|---|
<suite> | Tüm test grubunu temsil eder. |
<test> | Belirli bir test grubunu temsil eder. |
<classes> | Çalıştırılacak test sınıflarını listeler. |
<class> | Her bir Java test sınıfını belirtir. |
🧩 Birden Fazla Test Grubu
Section titled “🧩 Birden Fazla Test Grubu”Birden fazla test tanımı yaparak farklı test setleri oluşturabiliriz:
<suite name="RegressionSuite"> <test name="LoginTests"> <classes> <class name="tests.LoginPageTest" /> </classes> </test>
<test name="HomePageTests"> <classes> <class name="tests.HomePageTest" /> </classes> </test></suite>Bu durumda TestNG iki farklı test grubunu ardışık olarak çalıştıracaktır.
🧪 Belirli Metotları Çalıştırmak
Section titled “🧪 Belirli Metotları Çalıştırmak”Eğer bir sınıf içerisindeki belirli test metotlarını çalıştırmak istiyorsak:
<suite name="PartialSuite"> <test name="SpecificMethods"> <classes> <class name="tests.LoginTest"> <methods> <include name="validLoginTest"/> <exclude name="invalidLoginTest"/> </methods> </class> </classes> </test></suite>💡 Açıklama:
Section titled “💡 Açıklama:”<include>→ Yalnızca belirtilen metot çalıştırılır<exclude>→ Belirtilen metot hariç tutulur
⚙️ Parametre Kullanımı
Section titled “⚙️ Parametre Kullanımı”testng.xml ile test metotlarına dinamik parametre gönderebiliriz:
<suite name="ParameterSuite"> <parameter name="browser" value="chrome" /> <test name="LoginTest"> <classes> <class name="tests.LoginTest" /> </classes> </test></suite>Java Tarafında:
Section titled “Java Tarafında:”import org.testng.annotations.Parameters;import org.testng.annotations.Test;
public class LoginTest {
@Parameters("browser") @Test public void launchBrowser(String browserName) { System.out.println("Tarayıcı: " + browserName); }}⚡ Paralel Test Çalıştırma
Section titled “⚡ Paralel Test Çalıştırma”Birden fazla testin aynı anda (paralel olarak) çalışması için parallel özelliği kullanılır.
<suite name="ParallelSuite" parallel="tests" thread-count="2"> <test name="Test1"> <classes> <class name="tests.LoginTest" /> </classes> </test>
<test name="Test2"> <classes> <class name="tests.HomePageTest" /> </classes> </test></suite>🧠 Açıklama:
Section titled “🧠 Açıklama:”| Özellik | Açıklama |
|---|---|
parallel="tests" | Test seviyesinde paralel çalıştırma |
thread-count="2" | Aynı anda 2 test çalıştırılır |
🧵 Paket Bazlı Çalıştırma
Section titled “🧵 Paket Bazlı Çalıştırma”Bir paketteki tüm sınıfları dahil etmek için:
<suite name="PackageSuite"> <test name="PackageTest"> <packages> <package name="tests.login" /> <package name="tests.home" /> </packages> </test></suite>▶️ XML Dosyasını Çalıştırma
Section titled “▶️ XML Dosyasını Çalıştırma”IntelliJ IDEA veya Eclipse üzerinden:
Section titled “IntelliJ IDEA veya Eclipse üzerinden:”testng.xmldosyasına sağ tıklayın- Run ‘testng.xml’ seçeneğini seçin
Maven üzerinden:
Section titled “Maven üzerinden:”pom.xml dosyasında şu yapı yer almalıdır:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.2</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins></build>🧭 Özet
Section titled “🧭 Özet”| Özellik | Açıklama |
|---|---|
| Test sınıflarını organize eder | ✅ |
| Parametre geçmeyi destekler | ✅ |
| Paralel çalışmayı destekler | ✅ |
| Belirli metot veya paket seçimi | ✅ |
📚 Sonuç
Section titled “📚 Sonuç”testng.xml, TestNG testlerinin esnek, dinamik ve ölçeklenebilir şekilde yönetilmesini sağlar.
Gerçek dünya projelerinde genellikle RegressionSuite.xml, SmokeSuite.xml gibi özel XML dosyalarıyla test setleri organize edilir.
🧠 İpucu:
Birden fazla test grubunu birleştirmek istiyorsan, suite içinde farklı test blokları kullanabilirsin.