İçeriğe geç

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.


  • Hangi test sınıflarının çalıştırılacağını belirler
  • Testleri gruplayarak yönetimi kolaylaştırır
  • @Parameters anotasyonu ile parametre gönderilmesini sağlar
  • Paralel veya belirli sıra ile test çalıştırma imkânı tanır

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>
EtiketAnlamı
<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 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.


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>
  • <include> → Yalnızca belirtilen metot çalıştırılır
  • <exclude> → Belirtilen metot hariç tutulur

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>
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);
}
}

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>
ÖzellikAçıklama
parallel="tests"Test seviyesinde paralel çalıştırma
thread-count="2"Aynı anda 2 test çalıştırılır

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>

  • testng.xml dosyasına sağ tıklayın
  • Run ‘testng.xml’ seçeneğini seçin

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>

ÖzellikAçıklama
Test sınıflarını organize eder
Parametre geçmeyi destekler
Paralel çalışmayı destekler
Belirli metot veya paket seçimi

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.