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;
- assertEquals
- assertTrue
- assertFalse
- assertNull
- assertNotNull
- assertSame
- assertNotSame
- 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ı 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.
16
Güzel bir eğitim serisi olmuş. Elinize sağlık.