TestNG Nedir? TestNG İle Örnek Uygulama
Merhabalar arkadaşlar. Bu yazıda sizlere TestNG kütüphanesinden bahsetmek ve örnek bir uygulama yapmak istiyorum. Eğer kısmet olursa da TestNG’nin resmi dökümantasyonunu baz alarak bir yazı dizisi hazırlamak istiyorum. O nedenle bu yazıyı TestNG kütüphanesine giriş yazısı olarak da düşünebilirsiniz 😊
TestNG Nedir?
İsmi Next Generation Test kelimelerinden türetilen TestNG JUnit ve NUnit kütüphanelerinden etkilenerek ve onlara göre daha fazla yetkinlik barındıran bir test kütüphanesidir. Java dünyası içerisinde en bilindik test koşturma aracı olarak JUnit’i düşünebiliriz. TestNG de JUnit’in bu tahtına göz dikmiş olan bir test kütüphanesidir.
TestNG kendini daha güçlü, daha fonksiyonel ve daha kolay olarak nitelendirmektedir. Bu özellikler için şunları örnek verebiliriz:
- Notasyonlar
- Testlerin kendine has Thread’lerde koşabilmesi
- Multithread Safe Test Kodları
- Esnek test konfigürasyonu
- @DataProvider notasyonu sayesinde Data Driven Test
- Parametrik yönteme destek
- IDE’ler için Plugin desteği
- Daha ileri esneklik için BeanShell desteği
- Kendi içerisinde loglama desteği
Şimdi IDE’nizde bir Maven projesi açın ve pom.xml dosyanıza şu bağımlılık kodunu ekleyin:
Ben bu ve TestNG için gelecek diğer yazılarda NetBeans IDE kullanacağım. Size de tavsiye ederim 😁
Şimdi NetBeans IDE üzerinde projeye sağ tıklayıp New -> Other dedikten sonra gelen ekranda sol kısımdan Unit Tests‘i sağ kısımdan ise TestNG Case‘i seçelim ve bir herhangi bir isim verdiğiniz Test sınıfı oluşturalım.
NetBeans bizim için şöyle bir kod üretmiş olacak:
Şimdi yukarıdaki bu kodu şu şekilde düzenleyelim ve inceleyelim:
Kod içerisinde test koşturumu için kullanılan bir çok notasyon arasından 5 tanesini görüyoruz. Notasyonlar şu manalara gelmektedir:
- @BeforeClass: Bu notasyon class’ımız build edildiğinde ve sınıf içerisinden ya da bu sınıftan kalıtılan sınıf içerisinden herhangi bir test metodu çalışmadan hemen önce devreye girer. Dikkat etmemiz gereken nokta ise bu notasyon ile işretli metot her test için ayrı ayrı çalışmaz, bir kez çalışır.
- @BeforeMethod: Bu notasyon ile işaretli metot bu sınıf ve bu sınıftan kalıtılan her bir test metodunun koşumundan hemen önce çalışır. Yani her test metodu için ayrı ayrı çalışacaktır.
- @Test: Test case’lerimizi @Test notasyonu ile işaretli metotlarımızın içinde yazıyoruz. Bu Java sınıfımı Test sınıfı olarak koşturduğumuzda çalışacak merkezi noktalar bunlardır.
- @AfterMethod: Bu notasyon ile işaretli metot bu sınıf ve bu sınıftan kalıtılan her bir test metodunun koşumunun hemen ardından devreye girer. Yani her test metodu için ayrı ayrı çalışacaktır.
- @AfterClass: Bu notasyon artık bu sınıf içerisindeki tüm test metotları ve test metotları sonrasında koşacak metotlar bittiğinde devreye girer ve testlerin son aşamasında ne yapılması gerekiyorsa onu yapar. Örneğin Selenium’da web driver’ın kapatılması gibi.
Bu sınıfa sağ tıklayıp Test File seçeneğine tıkladığımızda sınıfızdaki test case’leri koşacak. Şöyle bir ekran çıktısı gelecek:
Ekran çıktısında gördüğümüz ve yukarıda bahsettiklerimiz doğrultusunda beklediğimiz gibi setUpClass() ve tearDownClass() metotları bir kez, setUpMethod() ve tearDownMethod() metotlarımız iki adet @Test ile işaretli metodumuz olduğu için 2 defa çalıştılar.
Bu yazıda anlatacaklarım bu kadar arkadaşlar. TestNG kütüphanesine böylece bir giriş yapmış olalım. Yazının başlarında da dediğim gibi resmi dökümana göre devamını getirmeye çalışacağım.
Görüşmek Üzere
Selam ve Sevgilerimle