TestNG Nedir? TestNG Intellij IDEA Kurulum ve TestNG Örnek Uygulama
TestNG Nedir ?
İsmi Next Generation Test kelimelerinden türetilmiş , Cédric Beust tarafından oluşturulmuştur. TestNG , JUnit ve NUnit hatlarında geliştirilen bir test çerçevesidir. JUnit ve NUnit’e göre kullanımını daha güçlü ve daha kolay hale getiren bazı yeni işlevler sunar. Başlıca özellikleri ;
- Notasyonlar
- Testlerin kendine has Thread’lerde koşabilmesi
- Multithread Safe Test Kodları / Multi thread (Çoklu Akış) test desteği
- 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
- Annotation (ek açıklama) desteği.
- Daha fazla nesne yönelimli geliştirme.
- Entegre sınıfları test etmeyi destekler.
- Esnek çalışma zamanı yapılandırması sağlar.
- Bağımlılık testi desteği.
TestNG tüm test kategorilerini kapsayacak şekilde tasarlanmıştır: ünite, işlevsel, uçtan uca, entegrasyon, vb., Ve JDK 5 veya daha üstünü gerektirir. Java’da en bilindik test koşturma aracı denince aklımıza JUnit gelir. TestNG ise Multi thread (Çoklu Akış) test desteği, Notasyonlar ve hata mesajlarının daha detaylı bir şekilde gösterilmesi gibi özellikleri ile JUnit’e sağlam bir rakip olma yolunda ilerlemektedir.
TestNG KURULUM
Öncelikle https://mvnrepository.com/ adresini tıklayınız. Arama kısımına TestNG yazıp, search butonuna basalım. Altta çıkan TestNG’ ye baktıktan sonra Karşımıza çıkan Son sürüm TestNG’ yi tıklayalım.
Karşımıza gelen ekrandaki jar dosyasını indirelim. Dependency kısımını da kopyalayıp , pom.xml dosyamızın içine yapıştırmamız gerekecektir.
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
Aşağıdaki gibi pom.xml dosyamızı açıp, <dependencies> </dependencies>
aralığında yukarıda gördüğünüz kodu yapıştırabiliriz.
Bu işlemden sonra File >> Project Structure seçeneğine basalım.
Java version seçtikten sonra alttaki JARs or directories seçeneğine basalım.
Buradan az önce indirmiş olduğumuz jar dosyası bilgisayarımızda nereye kayıt ettiysek oradan seçelim ve open butonuna basalım.
Apply >> OK butonlarına basalım. Ana ekranımızda sol taraftaki External Libraries içinde eklediğimiz testng.jar dosyamızın görünmesi gerekir.
Kod içerisinde test koşturumu için kullanılan notasyonlar JUnit ‘den farklı olacaktır bu notasyonları İmport etmemiz gerekir;
Kurulum işlemleri bu kadar artık testlerinizi TestNG çerçevesi ile koşturabilirsiniz.
TestNG Örnek Test
TestNG çerçevesi ile bir örnek yazalım. Instagram Login örneğini birlikte oluşturalım. Öncelikle Java class oluşturalım. Kodları aşağıda bırakıyorum.
package TestNG.test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
import static org.openqa.selenium.By.name;
import static org.openqa.selenium.By.xpath;
public class TestNG {
protected WebDriver driver;
public static String loginUrl = "https://www.instagram.com/accounts/login/?source=auth_switcher";
@BeforeTest
public void setUp() {
try {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "/Users/nesli/Example/Driver/chromedriver");
driver = new ChromeDriver(capabilities);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
//dynamic wait
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void Instagram() {
try {
driver.get(loginUrl);
driver.findElement(name("username")).sendKeys("nesli.necipoglu@gmail.com");
Thread.sleep(1000);
driver.findElement(name("password")).sendKeys("123456");
Thread.sleep(1000);
driver.findElement(xpath("/html[1]/body[1]/span[1]/section[1]/main[1]/div[1]/article[1]/div[1]/div[1]/div[1]/form[1]/div[4]")).click();
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
@AfterTest
public void tearDown() throws Exception {
}
}
pom.xml dosyası kodları ;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestNG.test</groupId>
<artifactId>Example</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Example</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.48.2</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Yukarıda göründüğü gibi testimizi koşturduğumuz zaman başarı ile ilk örneğimiz TestNG çerçevesi ile çalışacaktır.
Bir sonraki yazımda görüşmek üzere..