JUnit Assertions Kullanımı ve Sık Kullanılan Assertionlar

Merhaba arkadaşlar, Mobilhanem.com üzerinde Selenium ile Test Otomasyonu Geliştirme serimizin yedinci dersinde JUnit Assertions Kullanımı nasıldır bunu öğreneceğiz. Bir önceki dersimizde  JUnit Notasyonları Nelerdir ve Nasıl Kullanılır onu anlatmaya çalışmıştık. Bu dersimizde ise JUnit Assertions ne anlama geldiğini ve ne için kullanılacağını anlamış olacağız.

1. JUnit Assertions Ne İçin Kullanılır ?

JUnit Assertions Kullanımı yazmış olduğumuz test senaryosunun sonunda elde edilen  sonuç ile beklenilen sonuçların karşılaştırılması yapılması için kullanılır. Bir test senaryosundan beklenen sonuç ile elde edilmiş olan sonuç aynı ise test başarılı olarak nitelendirilir. Örneğin yazılan testler koşturma sırasında 3 test senaryosu geçti ve 2 test senaryosu doğru şekilde testten geçemediyse başarılı bir sonuç elde etmiş olmuyoruz. Assertions kullanımında birebir aynı sonuçların gelmesini beklememiz gerekmektedir.

2. JUnit Assertions Koşulları Nelerdir ?

Testlerde kabul edilen iki tür assertions vardır. Bunlardan biri Hard Assertions diğeri ise Soft Assertions’dır. Adından da anlaşılacağı gibi Hard Assertions ; test senaryosu içerisinde geçen onaylama koşulu gerçekleştirilmeden bir sonraki test adımına geçilmez. Bunun için bir otomasyonda bir exception attırılır. Exception atıldığında test durumu başarısız olarak sonuçlandırılır.Soft Assertions ise test senaryosu içerisinde bir onaylama koşulu gerçekleştirilmese bile test adımına devam eder ve herhangi bir exception atmaz ve bir sonraki test senaryosu adımı ile devam eder.

JUnit Assertions Kullanımı

JUnit Assertions kullanımı geçmeden önce kaç çeşit assertions var bunu görelim. Sekiz adet assertions tipi vardır. Bunlar;

  1. assertEquals
  2. assertTrue
  3. assertFalse
  4. assertNull
  5. assertNotNull
  6. assertSame
  7. assertNotSame
  8. assertArrayEquals

1. assertEquals

assertEquals , beklenen sonucu gerçek sonuç ile karşılaştırmak için kullanılır. Beklenen sonuç ile gerçek sonuç eşit değil ise gerçekleştirilen test senaryosu sonucunda assertionError hatası fırlatır.

2. assertTrue

assertTrue, beklenen bir sonucun true olduğunun kabul edilmesi gerektiği zaman kullanılır. Parametre olarak iki değer alır. İlk parametre de bir mesaj gönderilir ikinci parametrede ise gönderilen mesajın doğruluğu için koşul belirlenir.

3. assertFalse

assertFalse, beklenen bir sonucun false olması durumunda kullanılır. İki parametre alır. Parametrelerden biri mesajdır diğeri ise koşuldur. assertFalse ile koşul yerine getirilmez ise assertionError hatası fırlatır.

4.assertNull

assertNull, beklenen bir sonucun null olup olmadığı kontrol edilmesi için kullanılır. Bir nesneyi parametre olarak alır ve nesne null değil ise assertionError hatası fırlatır.

5.assertNotNull

assertNotNull, beklenen bir sonucun null olmadığını doğrulamak için kullanılır. Bir nesneyi parametre olarak alır ve nesne null ise assertionError hatası fırlatır.

6.assertSame

assertSame, parametre olarak verilen iki nesnenin aynı nesneye karşılık gelip gelmediğini kontrol eder. Eğer nesneler aynı nesneyi karşılamıyor ise assertionError hatası fırlatır.

7.assertNotSame

assertNotSame, parametre olarak verilen iki nesnenin birbirine eşit olmadığı kontrolünü eder. Eğer aynı nesneye karşılık geliyor ise assertionError hatası fırlatır.

8.assertArrayEquals

assertArrayEquals, parametre olarak verilen iki dizinin eşit olup olmadığını kontrol eder. Her iki dizi içinde null değeri var ise bunlar eşit olarak kabul edilir. Eğer eşit değil ise assertionError hatası fırlatır.

Yukarıda anlatılanların dışında assertions metodlarını görmek isterseniz tarayıcımıza eklenti olarak kurmuş olduğumuz Katalon IDE’yi açarak burada command alanında yer alan assertionsları ve diğer metodları görebilirsiniz.

JUnit Assertions Kullanımı
JUnit Assertions Kullanımı – Katalon IDE

 

JUnit Assertions Kullanımı

JUnit Assertions Kullanımı ile ilgili örnek yapalım. Java da kullandığınız ide’de yeni bir proje oluşturun. Yeni proje oluştururken IntelliJ ‘ de maven projesi oluşturalım. Projeyi oluşturdukdan sonra karşımıza çıkan pom sayfasına aşağıda bulunan dependencieslerimizi ekleyelim.

    <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.1.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

Bunları ekledikten sonra sync işlemi otomatik olarak yapılmaktadır. Ardından açılan projede src->test->java altında bir class oluşturalım. Bunun için aşağıda ki adımları uygulayabilirsiniz.

Oluşturmuş olduğumuz class’da assertionsları kullanabilmek için aşağıda bulunan kütüphaneyi import etmemiz gerekmektedir.

import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import static java.util.concurrent.TimeUnit.SECONDS;
import static org.junit.Assert.assertEquals;


public class JUnitAssertions {
    public static WebDriver driver;
    private static String baseUrl;
    @Before
    public void setUp() throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\aybukeka\\Desktop\\chromedriver.exe");
        driver = new ChromeDriver();
        baseUrl = "https://test.mobilhanem.com.tr/";
        
        //Driver elementlere erişim için 10 sn bekleme süresi tanınır
        driver.manage().timeouts().implicitlyWait(10, SECONDS);
        //Sayfaların beklenmesi için süre aşağıdaki gibi tanınır
        driver.manage().timeouts().pageLoadTimeout(200, SECONDS);
    }

    @Test
    public void testAssertions() throws Exception {
        driver.get(baseUrl);
        String urlEquals = "https://test.mobilhanem.com.tr/";

  //Driver’ın yönlendiği adresi getir ve eldeki address ile 
 // aynı olup olmadığını JUnit kütüphanesindeki assertions
 // metoduyla kontrol et 

        assertEquals(baseUrl, urlEquals);
 

    }
}

assertEquals örneğinde iki string değerinin eşit olması durumu değerlendirildi. Eğer farklı bir url verseydik testimiz passed olur muydu bunu görelim. Aşağıda ki resimde gördüğünüz gibi testimiz failed oldu.

Mobilhanem.com da Selenium ile Test Otomasyonu Geliştirme serisinin bu dersinde  JUnit Assertions Kullanımı adlı dersimizin sonuna geldik. Eksik ya da yanlış gördüğünüz veya anlamadığınız yerler için çekinmeden ulaşabilirsiniz. Bir sonraki yazıda görüşmek üzere.

Tüm Selenium derslerimiz için tıklayınız.

15

Sevde Aybüke Kaleli

DevOps Engineer at Evam, M.Sc.

1 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?