TestNG Groups
TestNG Groups, test senaryolarını mantıksal olarak gruplandırmak ve belirli testleri seçici biçimde çalıştırmak için kullanılır.
Özellikle büyük projelerde, testleri kategori bazlı yönetmek oldukça faydalıdır.
🎯 Groups Nedir?
Section titled “🎯 Groups Nedir?”Bir test metoduna @Test anotasyonunda groups parametresi eklenerek, o metoda ait olduğu grup belirtilir.
Örnek:
Section titled “Örnek:”import org.testng.annotations.Test;
public class GroupExample {
@Test(groups = {"sanity"}) public void sanityTest1() { System.out.println("Sanity test 1 çalıştı."); }
@Test(groups = {"regression"}) public void regressionTest1() { System.out.println("Regression test 1 çalıştı."); }
@Test(groups = {"sanity", "regression"}) public void combinedTest() { System.out.println("Hem sanity hem regression grubunda."); }}Yukarıdaki örnekte:
sanityTest1→ sanity grubuna ait.regressionTest1→ regression grubuna ait.combinedTest→ iki grupta da yer alır.
🧠 Neden Groups Kullanılır?
Section titled “🧠 Neden Groups Kullanılır?”- Belirli test türlerini (örneğin, sanity, smoke, regression) ayrı ayrı çalıştırmak için
- CI/CD pipeline’larında sadece belirli testlerin çalıştırılması gerektiğinde
- Büyük test setlerinde modüler çalışma sağlamak için
⚙️ XML Dosyasında Group Kullanımı
Section titled “⚙️ XML Dosyasında Group Kullanımı”TestNG XML dosyasında, hangi grupların çalıştırılacağını veya hariç tutulacağını belirtebiliriz.
Örnek: Sadece “sanity” grubunu çalıştırmak
Section titled “Örnek: Sadece “sanity” grubunu çalıştırmak”<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" ><suite name="Group Suite"> <test name="Sanity Tests"> <groups> <run> <include name="sanity" /> </run> </groups> <classes> <class name="testngexamples.GroupExample" /> </classes> </test></suite>Örnek: “regression” grubunu hariç tutmak
Section titled “Örnek: “regression” grubunu hariç tutmak”<suite name="Group Suite"> <test name="Exclude Regression"> <groups> <run> <exclude name="regression" /> </run> </groups> <classes> <class name="testngexamples.GroupExample" /> </classes> </test></suite>🧩 Gruplar Arası Bağımlılıklar
Section titled “🧩 Gruplar Arası Bağımlılıklar”dependsOnGroups özelliği ile bir grubun, başka bir grubun başarıyla tamamlanmasına bağlı olmasını sağlayabiliriz.
Örnek:
Section titled “Örnek:”import org.testng.annotations.Test;
public class DependsOnGroupExample {
@Test(groups = "login") public void loginTest() { System.out.println("Login işlemi başarılı."); }
@Test(groups = "checkout", dependsOnGroups = "login") public void checkoutTest() { System.out.println("Checkout işlemi login'e bağlı."); }}Bu örnekte
checkoutTest, sadecelogingrubundaki testler başarılı olursa çalışır.
🧮 Birden Fazla Grup Ekleme
Section titled “🧮 Birden Fazla Grup Ekleme”Bir metoda birden fazla grup atanabilir:
@Test(groups = {"ui", "smoke"})public void homePageTest() { System.out.println("Home Page test çalıştı.");}🧱 Özet Tablo
Section titled “🧱 Özet Tablo”| Özellik | Açıklama | Örnek |
|---|---|---|
| groups | Testin ait olduğu grup(lar) | @Test(groups = "smoke") |
| include | XML’de çalıştırılacak grup | <include name="sanity" /> |
| exclude | XML’de hariç tutulacak grup | <exclude name="regression" /> |
| dependsOnGroups | Başka gruplara bağımlı test | @Test(dependsOnGroups = "login") |
✅ Sonuç
Section titled “✅ Sonuç”TestNG’de Groups özelliği, testleri kategori bazlı yönetme, belirli senaryoları seçerek çalıştırma ve bağımlılıklar kurma açısından çok güçlü bir mekanizmadır.
Özellikle büyük test setlerinde testlerin kontrolünü kolaylaştırır ve CI/CD süreçlerinde esneklik sağlar.