İçeriğe geç

TestNG Assertions

TestNG’de Assertions, test sonuçlarını doğrulamak için kullanılır.
Bir testin beklenen sonuçla gerçek sonuç arasındaki farkı kontrol eder. Eğer assertion başarısız olursa, test FAIL olarak işaretlenir.


Assertion’lar, testin doğruluk noktalarıdır.
Bir değer beklenen ile uyuşmuyorsa, TestNG testin başarısız olduğunu raporlar.

TestNG iki tür assertion sağlar:

  1. Hard Assertions
  2. Soft Assertions

Hard assertion başarısız olursa, test o noktada durur ve kalan kod yürütülmez.

import org.testng.Assert;
import org.testng.annotations.Test;
public class HardAssertionTest {
@Test
public void testHardAssertion() {
String actualTitle = "Google";
String expectedTitle = "Google";
Assert.assertEquals(actualTitle, expectedTitle);
System.out.println("Bu satır yalnızca assertion başarılıysa çalışır.");
}
}
MetotAçıklama
Assert.assertEquals(actual, expected)İki değerin eşit olup olmadığını kontrol eder.
Assert.assertTrue(condition)Koşulun true olup olmadığını kontrol eder.
Assert.assertFalse(condition)Koşulun false olup olmadığını kontrol eder.
Assert.assertNull(object)Nesnenin null olup olmadığını kontrol eder.
Assert.assertNotNull(object)Nesnenin null OLMADIĞINI kontrol eder.
Assert.fail(message)Testi manuel olarak başarısız hale getirir.

Soft assertions, hata oluşsa bile testin devam etmesini sağlar.
Tüm doğrulamalar yapıldıktan sonra assertAll() çağrıldığında hatalar raporlanır.

import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class SoftAssertionTest {
@Test
public void testSoftAssertions() {
SoftAssert softAssert = new SoftAssert();
System.out.println("Test başladı...");
softAssert.assertEquals("Hello", "Hi", "String eşleşmedi!");
softAssert.assertTrue(5 > 10, "Koşul başarısız!");
softAssert.assertNotNull(null, "Nesne null!");
System.out.println("Tüm doğrulamalar yapıldı, assertAll çağrılıyor...");
// Hataları raporla
softAssert.assertAll();
}
}

⚠️ Eğer assertAll() çağrılmazsa, TestNG hataları raporlamaz
ve test başarılı görünür.


🎯 Hard vs Soft Assertion Karşılaştırması

Section titled “🎯 Hard vs Soft Assertion Karşılaştırması”
ÖzellikHard AssertionSoft Assertion
Hata olduğundaTesti durdururTeste devam eder
Kullanım sınıfıorg.testng.Assertorg.testng.asserts.SoftAssert
RaporlamaAnındaassertAll() ile
Kullanım alanıKritik kontrollerBirden fazla kontrol yapılan testler

  • Kritik adımlarda Hard Assertion, doğrulama aşamalarında Soft Assertion kullanın.
  • assertAll() her zaman testin sonunda çağrılmalıdır.
  • Assertion mesajlarını anlamlı yazın:
    Assert.assertEquals(actual, expected, "Sayfa başlığı beklenen ile uyuşmuyor!");

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class AssertionExample {
@Test
public void loginPageTest() {
SoftAssert softAssert = new SoftAssert();
String actualTitle = "Dashboard";
String expectedTitle = "Dashboard";
// Hard assertion - başlık kontrolü
Assert.assertEquals(actualTitle, expectedTitle, "Başlık hatalı!");
// Soft assertion - diğer kontroller
boolean logoGorunuyor = false;
softAssert.assertTrue(logoGorunuyor, "Logo görünmüyor!");
String usernameLabel = null;
softAssert.assertNotNull(usernameLabel, "Kullanıcı adı etiketi eksik!");
softAssert.assertAll();
}
}

  • Hard Assertion: Hemen durdurur, kritik kontroller için uygundur.
  • Soft Assertion: Tüm doğrulamaları toplar, raporu sonunda sunar.
  • assertAll(): Soft assert sonuçlarını bildirmek için zorunludur.
  • TestNG assertion’lar, testlerin güvenilirliğini artırır.

🧩 Sonuç:
TestNG Assertions, otomasyon testlerinde test senaryolarının doğruluğunu ve güvenilirliğini sağlamanın temel yapı taşlarından biridir.