Ana içeriğe atla

Kayıtlar

TestNG - Listeners

TestNG raporlarını ya da çıktılarını özelliştirmek için kullanılan bir interface. 12 tane listener bulunmakta. IAnnotationTransformer , IAnnotationTransformer2 , IConfigurable , IConfigurationListener , IExecutionListener, IHookable , IInvokedMethodListener , IInvokedMethodListener2 , IMethodInterceptor , IReporter, ISuiteListener, ITestListener Herhangi bir listener kullanılmak istenildiğinde, bunu yapmanın çoğunlukla kullanılan iki yolu vardır.  İlki; ilgili listener'ı implement edecek class'ı oluşturmak gerekir. Class'ın içine kullandığınız IDE ilgili listener'ın fonksiyonları getirir. Kullanmak istediklerinize kodunuzu eklersiniz. Daha sonra ise asıl test kodunuzun olduğu class koduna, class kısmından önce @Listeners(paketIsmi.listenerSınıfınınAdi.class) eklemesi yapmanız gerekir.   Diğeri ise, eğer bu listener'i birden fazla sınıf için kullanacaksanız bu yolu kullanmanız gerekir karışıklığı önlemek için, o da testng.xml'de önceki ma...

TestNG - Bağımlılık (Dependency)

Bazı durumlarda yazdığınız test kodunda birbirine bağımlı test metotları olabilir. TestNG, bu bağımlılıkları xml dosyanızda ya da kodunuzda belirtmenize (annotation ile) olanak sağlar. TestNG'de iki çeşit bağımlılık vardır: Hard dependency 'de testinizin bağımlı olduğu diğer testlerin hepsinin başarılı olması gerekir. Eğer bir tanesi bile başarısız olduysa bağımlı olan testler çalışmaz, atlanır.  Soft dependency 'de ise bağımlı olunan testlerden başarısız olan olsa bile diğer testler çalışır. Bu bağımlılık çeşidini kullanmak için @Test (alwaysRun=true) ifadesini eklemek gerekir. Aşağıda, Hard dependency'nin kodda belirtilmesine örnek kod bulunmaktadır. Hem metota bağımlılık hem gruba bağımlılık belirtilebilir. @Test public void serverStartedOk() {} @Test( dependsOnMethods = { "serverStartedOk" }) public void method1() {} Bu örnekte, method1() ,serverStartedOk() metoduna bağımlı olarak belirtilmiştir, bu durumda ilk serverStartedOk()...

Selenium - Paralel Execution

Paralel testte, farklı modülleri ya da uygulamaları aynı anda farklı tarayıcılarda çalıştırabiliriz. Seri çalıştırmaya göre testiniz daha kısa sürede koşacaktır. Testng.xml dosyasına paralel olarak çalıştıracağınız kısmı aşağıdaki örnekler gibi yazmalısınız. Thread-count ile test koşturumu için kaç tane thread'in çalışacağını belirtebilirsiniz. <suite name="..." parallel="methods" thread-count="5"> <suite name="..." parallel="tests" thread-count="5"> <suite name="..." parallel="classes" thread-count="5"> <suite name="..." parallel="instances" thread-count="5"> "methods": TestNG farklı thread'lerde bütün test metotlarını çalıştırır. Birbirine bağımlı testler ayrıca farklı threadlerde sıraya uygun olarak çalışır.  "tests": TestNG, xml de belirttiğiniz  <test> etiketindeki bütün metotları aynı threa...

TestNG - Gruplar

TestNG'deki grup özelliği istediğiniz fonksiyonları istediğiniz gruba ayırmanızı ya da toplamanızı sağlar. Bu özellik JUnit'de bulunmamaktadır.  Grup özelliğiyle istediğiniz gruptaki fonksiyonları çalıştırabilirsiniz. Grup içinde grup da tanımlayabilirsiniz.  Bu özelliği kullanabilmek için kendiniz aşağıdaki gibi bir xml dosyası oluşturmalısınız.  Kodu çalıştırırken de bu xml dosyasını koşturmanız gerekmektedir. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">         <suite name="Suite">                     <test name="Demo">                              <groups>                                         <run>       ...

TestNG Groups - NullPointerException

Eğer TestNG grup özelliğini kullanırken xml'i çalıştırdığınızda NullPointerException alıyorsanız; setUp metodunuzdan önce kullandığınız grupları @BeforeGroups annotation ı ile tanımlayabilirsiniz. @BeforeGroups (groups ={"giris","dogrulama"}) gibi.

TestNG - Öncellikler

TestNG'de çalıştıracağınız kodda birbirine bağımlı @Test ler varsa öncelik kullanarak çalışacak testin sırasına karar verebilirsiniz. TestNG'de herhangi bir öncelik kullanmazsanız alfabetik sıraya göre testleri çalıştırır. @Test (priority=2) gibi bir öncelik ifadesi kullanırsanız, öncelik değeri düşük olandan koşturmaya başlar. Aynı öncelik değerine sahip iki test varsa, alfabetik olarak sıralamaya koyar ve testi koşturur. Koşturacağınız testte hem öncelik değeri olan hem de olmayan testler varsa; önce öncelik değeri olmayan testleri alfabetik sıraya göre daha sonra öncelik değeri düşük olandan başlayarak koşturur. Yine aynı öncelik değeri olan testleri alfabetik sırayla koşturur. TestNG'de büyük/küçük harf duyarlılığı olduğu için "priority" 'nin küçük yazılması gerekir yoksa hata verir. Örnek: Koşturacağımız testte iki grup olduğunu varsayalım. Testleri hem gruplara ayıralım hem öncelik verelim. TestNG'nin bu testleri çalıştırma sırası aşağıda...

TestNG - Notasyonlar (Annotations), Doğrulamalar (Assertions)

TestNG, JUnit ve NUnit kütüphanelerinden etkilenen ve onlara göre daha fazla yetkinlik barındıran bir test kütüphanesidir. TestNG ait özellikler ve kolaylıklar için şunları örnek verebiliriz: Notasyonlar (Annotations) Testlerin kendine has Thread’lerde koşabilmesi testng.xml dosyasıyla testlerin önceliklendirilmesi, gruplandırılması vb. kolaylıklar Kendi içerisinde loglama, raporlama desteği Notasyonlar sayesinde kodun ve oluşturulan raporun kolaylıkla anlaşılması @DataProvider notasyonu sayesinde veriye dayalı test desteği (Data Driven Test) Maven, Jenkins vb. ide ler için eklenti desteği Parametre desteği Notasyonlar: @Test Notasyonu Yazılan otomasyon kodunda test olarak çalışmasını istediğimiz kod parçasının önüne bu notasyonu ekleriz. Bu notasyonu birden fazla kez kullanabiliriz. Eğer herhangi bir parametre tanımlanmadıysa testler alfabetik olarak çalışır.  Aşağıdaki parametreler, hangi testin hangi sırayla çalışacağının, koşturulup koşturulmayacağın...