TestNG - Hızlı Kılavuz
Test, gereksinimlere göre çalıştığından emin olmak için bir uygulamanın işlevselliğini kontrol etme sürecidir. Birim testi, nihai ürünün gereksinimleri karşıladığından emin olmak için her bir varlığı (sınıf veya yöntem) test etmek için yeterli önlemlerin alındığı geliştirici düzeyinde ortaya çıkar.
JUnit, geliştiricileri diğer herhangi bir test çerçevesine kıyasla testlerin, özellikle de birim testlerinin yararlılığını anlamaya yönlendirmiştir. Oldukça basit, pragmatik ve katı bir mimariden yararlanan JUnit, çok sayıda geliştiriciye "bulaştırabildi". Özelliklerini iyi anlamak için JUnit ile ilgili eğitimimize bir göz atın. JUnit'in aynı zamanda aşağıda listelenen bazı eksiklikleri de vardır -
Başlangıçta yalnızca birim testini etkinleştirmek için tasarlanmıştır, şimdi her tür test için kullanılmaktadır.
Bağımlılık testi yapılamaz.
Zayıf konfigürasyon kontrolü (setUp / tearDown).
Müdahaleci (sizi sınıfları genişletmeye ve yöntemlerinizi belirli bir şekilde adlandırmaya zorlar).
Statik programlama modeli (sizi gereksiz yere yeniden derlemeye zorlar).
Karmaşık projelerdeki farklı test gruplarının yönetimi çok zor olabilir.
TestNG nedir?
TestNG'nin dokümantasyonuna göre tanımı aşağıdaki gibidir -
TestNG, JUnit ve NUnit'ten esinlenen bir test çerçevesidir, ancak onu daha güçlü ve kullanımı daha kolay hale getiren bazı yeni işlevler sunar.
TestNG, açık kaynaklı bir otomatik test çerçevesidir; neredeNG anlamına geliyor NextGenerji. TestNG, JUnit'e benzer (özellikle JUnit 4), ancak bir JUnit uzantısı değildir. JUnit'ten esinlenmiştir. Özellikle entegre sınıfları test ederken JUnit'ten daha iyi olacak şekilde tasarlanmıştır. TestNG'nin yaratıcısı Cedric Beust'tur .
Eski çerçevenin sınırlamalarının çoğunu ortadan kaldıran TestNG, geliştiriciye daha esnek ve güçlü testler yazma yeteneği verir. Testleri tanımlamak için Java Annotations'tan (JDK 5.0 ile tanıtıldı) büyük ölçüde ödünç aldığı için, Java dilinin bu yeni özelliğini gerçek bir üretim ortamında nasıl kullanacağınızı da gösterebilir.
TestNG Özellikleri
Ek açıklamaları destekler.
TestNG, daha fazla Java ve OO özelliği kullanır.
Entegre sınıfların test edilmesini destekler (örneğin, varsayılan olarak, her test yöntemi için yeni bir test sınıfı oluşturmaya gerek yoktur).
Derleme zamanı test kodunu çalışma zamanı konfigürasyonundan / veri bilgisinden ayırır.
Esnek çalışma zamanı yapılandırması.
'Test grupları'nı tanıtır. Testlerinizi derledikten sonra, TestNG'den tüm "ön uç" testleri veya "hızlı", "yavaş", "veritabanı" testleri vb. Çalıştırmasını isteyebilirsiniz.
Bağımlı test yöntemlerini, paralel testi, yük testini ve kısmi arızayı destekler.
Esnek eklenti API'si.
Çok iş parçacıklı test desteği.
TestNG, Java için bir çerçevedir, bu nedenle ilk gereksinim, makinenizde JDK'nın kurulu olmasıdır.
Sistem gereksinimleri
JDK | 1.5 veya üstü. |
Hafıza | Minimum gereklilik yok. |
Disk alanı | Minimum gereklilik yok. |
İşletim sistemi | Minimum gereklilik yok. |
Adım 1 - Makinenizde Java Kurulumunu Doğrulayın
Konsolu açın ve sisteminize yüklediğiniz işletim sistemine bağlı olarak bir java komutu yürütün.
işletim sistemi | Görev | Komut |
---|---|---|
pencereler | Komut Konsolunu Aç | c: \> java sürümü |
Linux | Komut Terminalini Aç | $ java sürümü |
Mac | Açık Terminal | makine: ~ joseph $ java -version |
Tüm işletim sistemleri için çıktıyı doğrulayalım -
işletim sistemi | Çıktı |
---|---|
pencereler | java sürümü "1.7.0_25" Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.7.0_25-b15) Java HotSpot (TM) 64-Bit Sunucu VM (yapı 23.25-b01, karma mod) |
Linux | java sürümü "1.7.0_25" Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.7.0_25-b15) Java HotSpot (TM) 64-Bit Sunucu VM (yapı 23.25-b01, karma mod) |
Mac | java sürümü "1.7.0_25" Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.7.0_25-b15) Java HotSpot (TM) 64-Bit Sunucu VM (yapı 23.25-b01, karma mod) |
Java'nız yoksa, Java Yazılım Geliştirme Kitini (SDK) şuradan yükleyin: https://www.oracle.com/technetwork/java/javase/downloads/index.html. Bu eğitim için Java 1.7.0_25 sürümünü kurulu sürüm olarak kabul ediyoruz.
Adım 2: JAVA Ortamını Ayarlayın
Yı kur JAVA_HOMEJava'nın makinenizde kurulu olduğu temel dizin konumunu gösteren ortam değişkeni. Örneğin,
işletim sistemi | Çıktı |
---|---|
pencereler | JAVA_HOME ortam değişkenini C: \ Program Files \ Java \ jdk1.7.0_25 olarak ayarlayın. |
Linux | JAVA_HOME = / usr / local / java-current dosyasını dışa aktarın. |
Mac | JAVA_HOME = / Library / Java / Home'u dışa aktarın. |
Java derleyici konumunu Sistem Yoluna ekleyin.
işletim sistemi | Çıktı |
---|---|
pencereler | Sistem değişkeni olan Yol'un sonuna C: \ Program Files \ Java \ jdk1.7.0_25 \ bin dizesini ekleyin. |
Linux | PATH dışa aktar =$PATH:$JAVA_HOME / bin / |
Mac | Gerekli değil |
Komutu kullanarak Java Kurulumunu doğrulayın java -version yukarıda açıklandığı gibi.
3. Adım: TestNG Arşivini İndirin
TestNG jar dosyasının en son sürümünü şuradan indirin: http://www.testng.org. Bu öğreticiyi yazarken, testng-6.8.jar dosyasını indirdik ve C: \> TestNG klasörüne kopyaladık.
işletim sistemi | Arşiv adı |
---|---|
pencereler | testng-6.8.jar |
Linux | testng-6.8.jar |
Mac | testng-6.8.jar |
Adım 4: TestNG Ortamını Ayarlayın
Yı kur TESTNG_HOMEortam değişkeni, TestNG kavanozunun makinenizde depolandığı temel dizin konumuna işaret eder. Aşağıdaki tablo, testng-6.8.jar dosyasını C: \> TestNG konumunda sakladığımızı varsayarak Windows, Linux ve Mac'te ortam değişkeninin nasıl ayarlanacağını gösterir.
işletim sistemi | Açıklama |
---|---|
pencereler | TESTNG_HOME ortam değişkenini C: \ TESTNG olarak ayarlayın. |
Linux | Dışa aktar TESTNG_HOME = / usr / local / TESTNG |
Mac | Dışa Aktar TESTNG_HOME = / Kitaplık / TESTNG |
Adım 5: CLASSPATH Değişkenini Ayarlayın
Yı kur CLASSPATH TestNG kavanoz konumuna işaret edecek ortam değişkeni.
işletim sistemi | Açıklama |
---|---|
pencereler | CLASSPATH ortam değişkenini% CLASSPATH%;% TESTNG_HOME% \ testng-6.8.jar olarak ayarlayın. |
Linux | CLASSPATH'ı Dışa Aktar =$CLASSPATH:$TESTNG_HOME / testng-6.8.jar. |
Mac | CLASSPATH'ı Dışa Aktar =$CLASSPATH:$TESTNG_HOME / testng-6.8.jar. |
Adım 6: TestNG Kurulumunu Test Edin
Adresinde TestNGSimpleTest adlı bir java sınıfı dosyası oluşturun C:\>TestNG_WORKSPACE.
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class TestNGSimpleTest {
@Test
public void testAdd() {
String str = "TestNG is working fine";
AssertEquals("TestNG is working fine", str);
}
}
TestNG birkaç farklı şekilde çağrılabilir -
- Bir testng.xml dosyasıyla.
- ANT ile.
- Komut satırından.
Testng.xml dosyasını kullanarak çağıralım. İçinde testng.xml adıyla bir xml dosyası oluşturun.C:\>TestNG_WORKSPACE Test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "TestNGSimpleTest"/>
</classes>
</test>
</suite>
7. Adım: Sonucu Doğrulayın
Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -
C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java
Şimdi sonucu görmek için testng.xml dosyasını çağırın -
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
TestNG'de bir test yazmak temel olarak aşağıdaki adımları içerir -
Testinizin iş mantığını yazın ve kodunuza TestNG notlarını ekleyin.
Testinizle ilgili bilgileri (örn. Sınıf adı, çalıştırmak istediğiniz gruplar vb.) Bir testng.xml dosyasına veya build.xml'ye ekleyin.
TestNG'yi çalıştırın.
Burada, POJO sınıfı, İş mantığı sınıfı ve TestNG tarafından çalıştırılacak bir test xml kullanılarak TestNG testinin eksiksiz bir örneğini göreceğiz.
Oluşturmak EmployeeDetails.java içinde C:\>TestNG_WORKSPACE, bir POJO sınıfıdır.
public class EmployeeDetails {
private String name;
private double monthlySalary;
private int age;
// @return the name
public String getName() {
return name;
}
// @param name the name to set
public void setName(String name) {
this.name = name;
}
// @return the monthlySalary
public double getMonthlySalary() {
return monthlySalary;
}
// @param monthlySalary the monthlySalary to set
public void setMonthlySalary(double monthlySalary) {
this.monthlySalary = monthlySalary;
}
// @return the age
public int getAge() {
return age;
}
// @param age the age to set
public void setAge(int age) {
this.age = age;
}
}
EmployeeDetails sınıf kullanılır -
- çalışanın adının değerini alın / ayarlayın.
- çalışanın aylık maaşının değerini alın / ayarlayın.
- çalışanın yaşının değerini öğrenin / ayarlayın.
Oluşturduğunuz bir EmpBusinessLogic.java içinde C:\>TestNG_WORKSPACE, iş mantığını içeren.
public class EmpBusinessLogic {
// Calculate the yearly salary of employee
public double calculateYearlySalary(EmployeeDetails employeeDetails) {
double yearlySalary = 0;
yearlySalary = employeeDetails.getMonthlySalary() * 12;
return yearlySalary;
}
// Calculate the appraisal amount of employee
public double calculateAppraisal(EmployeeDetails employeeDetails) {
double appraisal = 0;
if(employeeDetails.getMonthlySalary() < 10000) {
appraisal = 500;
} else {
appraisal = 1000;
}
return appraisal;
}
}
EmpBusinessLogic sınıf hesaplamak için kullanılır -
- çalışanın yıllık maaşı.
- çalışan ekspertiz tutarı.
Şimdi, adında bir TestNG sınıfı oluşturalım TestEmployeeDetails.javaC: \> TestNG_WORKSPACE konumunda. Bir TestNG sınıfı, en az bir TestNG ek açıklaması içeren bir Java sınıfıdır. Bu sınıf, test edilecek test senaryolarını içerir. Bir TestNG testi, belirli bir noktadan önce ve sonra bazı Java mantığının gerçekleştirilmesine izin veren @BeforeXXX ve @AfterXXX açıklamaları ile yapılandırılabilir (bunu TestNG - Yürütme Prosedürü bölümünde göreceğiz ).
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestEmployeeDetails {
EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic();
EmployeeDetails employee = new EmployeeDetails();
@Test
public void testCalculateAppriasal() {
employee.setName("Rajeev");
employee.setAge(25);
employee.setMonthlySalary(8000);
double appraisal = empBusinessLogic.calculateAppraisal(employee);
Assert.assertEquals(500, appraisal, 0.0, "500");
}
// Test to check yearly salary
@Test
public void testCalculateYearlySalary() {
employee.setName("Rajeev");
employee.setAge(25);
employee.setMonthlySalary(8000);
double salary = empBusinessLogic.calculateYearlySalary(employee);
Assert.assertEquals(96000, salary, 0.0, "8000");
}
}
TestEmployeeDetails sınıfı, yöntemlerini test etmek için kullanılır EmpBusinessLogicsınıf. Aşağıdakileri yapar -
Çalışanın yıllık maaşını test eder.
Çalışanın ekspertiz tutarını test eder.
Testleri çalıştırmadan önce, TestNG'yi geleneksel olarak testng.xml olarak adlandırılan özel bir XML dosyası kullanarak yapılandırmanız gerekir. Bu dosyanın sözdizimi çok basittir ve içeriği aşağıda gösterildiği gibidir. Bu dosyayı şurada oluşturunC:\>TestNG_WORKSPACE.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "TestEmployeeDetails"/>
</classes>
</test>
</suite>
Yukarıdaki dosyanın detayları aşağıdaki gibidir -
Bir paket, bir XML dosyasıyla temsil edilir. Bir veya daha fazla test içerebilir ve <suite> etiketiyle tanımlanır.
<test> etiketi bir testi temsil eder ve bir veya daha fazla TestNG sınıfı içerebilir.
<class> etiketi bir TestNG sınıfını temsil eder. En az bir TestNG ek açıklaması içeren bir Java sınıfıdır. Bir veya daha fazla test yöntemi içerebilir.
Javac kullanarak Test senaryosu sınıflarını derleyin.
C:\TestNG_WORKSPACE>javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java
Şimdi aşağıdaki komutla TestNG -
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Her şey doğru bir şekilde yapıldıysa, testlerinizin sonuçlarını konsolda görmelisiniz. Ayrıca, TestNG adlı bir klasörde çok güzel bir HTML raporu oluşturur.test-outputmevcut dizinde otomatik olarak oluşturulur. Açar ve index.html'yi yüklerseniz, aşağıdaki resimdekine benzer bir sayfa göreceksiniz -
JUnit 3'te test yöntemlerini belirtmenin geleneksel yolu, adlarının önüne test koymaktır. Bu, bir sınıftaki belirli yöntemleri özel bir anlama sahip olarak etiketlemek için çok etkili bir yöntemdir, ancak adlandırma çok iyi ölçeklenmez (ya farklı çerçeveler için daha fazla etiket eklemek istersek?) Ve oldukça esnek değildir (ya eğer biz test çerçevesine ek parametreler geçirmek ister misiniz?).
Ek açıklamalar JDK 5'te Java diline resmi olarak eklendi ve TestNG, test sınıflarına açıklama eklemek için ek açıklamaları kullanma seçimini yaptı.
İşte TestNG'nin desteklediği ek açıklamalar listesi -
Sr.No. | Ek Açıklama ve Açıklama |
---|---|
1 | @BeforeSuite Açıklamalı yöntem, bu paketteki tüm testler çalıştırılmadan önce yalnızca bir kez çalıştırılacaktır. |
2 | @AfterSuite Açıklamalı yöntem, bu paketteki tüm testler çalıştırıldıktan sonra yalnızca bir kez çalıştırılacaktır. |
3 | @BeforeClass Açıklamalı yöntem, geçerli sınıftaki ilk test yöntemi çağrılmadan önce yalnızca bir kez çalıştırılacaktır. |
4 | @AfterClass Açıklamalı yöntem, geçerli sınıftaki tüm test yöntemleri çalıştırıldıktan sonra yalnızca bir kez çalıştırılacaktır. |
5 | @BeforeTest Ek açıklamalı yöntem, <test> etiketi içindeki sınıflara ait herhangi bir test yöntemi çalıştırılmadan önce çalıştırılacaktır. |
6 | @AfterTest Ek açıklamalı yöntem, <test> etiketi içindeki sınıflara ait tüm test yöntemleri çalıştırıldıktan sonra çalıştırılacaktır. |
7 | @BeforeGroups Bu yapılandırma yönteminin daha önce çalıştıracağı grupların listesi. Bu yöntemin, bu gruplardan herhangi birine ait olan ilk test yöntemi çağrılmadan kısa bir süre önce çalışması garanti edilir. |
8 | @AfterGroups Bu yapılandırma yönteminin daha sonra çalışacağı grupların listesi. Bu yöntemin, bu gruplardan herhangi birine ait olan son test yöntemi çağrıldıktan kısa bir süre sonra çalışması garanti edilir. |
9 | @BeforeMethod Açıklamalı yöntem, her test yönteminden önce çalıştırılacaktır. |
10 | @AfterMethod Açıklamalı yöntem, her test yönteminden sonra çalıştırılacaktır. |
11 | @DataProvider Bir yöntemi, bir test yöntemi için veri sağlama olarak işaretler. Açıklamalı yöntem bir Object [] [] döndürmelidir, burada her Object [] test yönteminin parametre listesine atanabilir. Bu DataProvider'dan veri almak isteyen @Test yönteminin, bu ek açıklamanın adına eşit olan bir dataProvider adı kullanması gerekir. |
12 | @Factory
Bir yöntemi, TestNG tarafından Test sınıfları olarak kullanılacak nesneleri döndüren bir fabrika olarak işaretler. Yöntem, Object [] döndürmelidir. |
13 | @Listeners Bir test sınıfındaki dinleyicileri tanımlar. |
14 | @Parameters @Test yöntemine parametrelerin nasıl aktarılacağını açıklar. |
15 | @Test Bir sınıfı veya yöntemi testin bir parçası olarak işaretler. |
Ek Açıklamaları Kullanmanın Yararları
Ek açıklamaları kullanmanın yararlarından bazıları şunlardır -
TestNG, ek açıklamalara bakarak ilgilendiği yöntemleri tanımlar. Bu nedenle, yöntem adları herhangi bir kalıp veya formatla sınırlı değildir.
Ek açıklamalara ek parametreler aktarabiliriz.
Ek açıklamalar güçlü bir şekilde yazılmıştır, bu nedenle derleyici hataları hemen işaretleyecektir.
Test sınıflarının artık herhangi bir şeyi genişletmesine gerek yoktur (JUnit 3 için TestCase gibi).
Bu bölüm, TestNG'deki yöntemlerin uygulama prosedürünü açıklamaktadır. Çağrılan yöntemlerin sırasını açıklar. İşte bir örnekle TestNG test API yöntemlerinin yürütme prosedürü.
Bir java sınıfı dosya adı oluşturun TestngAnnotation.java içinde C:\>TestNG_WORKSPACE ek açıklamaları test etmek için.
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;
public class TestngAnnotation {
// test case 1
@Test
public void testCase1() {
System.out.println("in test case 1");
}
// test case 2
@Test
public void testCase2() {
System.out.println("in test case 2");
}
@BeforeMethod
public void beforeMethod() {
System.out.println("in beforeMethod");
}
@AfterMethod
public void afterMethod() {
System.out.println("in afterMethod");
}
@BeforeClass
public void beforeClass() {
System.out.println("in beforeClass");
}
@AfterClass
public void afterClass() {
System.out.println("in afterClass");
}
@BeforeTest
public void beforeTest() {
System.out.println("in beforeTest");
}
@AfterTest
public void afterTest() {
System.out.println("in afterTest");
}
@BeforeSuite
public void beforeSuite() {
System.out.println("in beforeSuite");
}
@AfterSuite
public void afterSuite() {
System.out.println("in afterSuite");
}
}
Şimdi dosyayı oluşturalım testng.xml içinde C:\>TestNG_WORKSPACE ek açıklamaları yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "TestngAnnotation"/>
</classes>
</test>
</suite>
Javac kullanarak Test durumu sınıfını derleyin.
C:\TestNG_WORKSPACE>javac TestngAnnotation.java
Şimdi, sağlanan Test Case sınıfında tanımlanan test senaryosunu çalıştıracak olan testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java org.testng.TestNG testng.xml
Çıkışı doğrulayın.
in beforeSuite
in beforeTest
in beforeClass
in beforeMethod
in test case 1
in afterMethod
in beforeMethod
in test case 2
in afterMethod
in afterClass
in afterTest
in afterSuite
===============================================
Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
Yukarıdaki çıktıya dayanarak, yürütme prosedürü aşağıdaki gibidir -
Her şeyden önce beforeSuite () yöntemi yalnızca bir kez çalıştırılır.
Son olarak, afterSuite () yöntemi yalnızca bir kez çalıştırılır.
BeforeTest (), beforeClass (), afterClass () ve afterTest () yöntemleri bile yalnızca bir kez çalıştırılır.
beforeMethod () yöntemi, her test durumu için ancak test senaryosu yürütülmeden önce yürütülür.
afterMethod () yöntemi, her test durumu için ancak test senaryosu çalıştırıldıktan sonra yürütülür.
BeforeMethod () ve afterMethod () arasında, her test senaryosu yürütülür.
Test senaryoları kullanılarak yürütülür TestNGsınıf. Bu sınıf, TestNG çerçevesindeki testleri çalıştırmak için ana giriş noktasıdır. Kullanıcılar kendi TestNG nesnelerini oluşturabilir ve bunu aşağıdakiler gibi birçok farklı şekilde çalıştırabilir:
Mevcut bir testng.xml üzerinde.
Tamamen Java'dan oluşturulmuş sentetik bir testng.xml üzerinde.
Doğrudan test sınıflarını belirleyerek.
Ayrıca hangi grupları dahil edeceğinizi veya hariç tutacağınızı, parametre atayacağınızı vb. Tanımlayabilirsiniz. Komut satırı parametreleri şunlardır:
-d outputdir: çıktı dizinini belirtir.
-testclass sınıf_adı: bir veya birkaç sınıf adını belirtir.
-testjar jar_name: testleri içeren kavanozu belirtir.
-sourcedir src1; src2:; kaynak dizinlerin ayrılmış listesi (yalnızca javadoc ek açıklamaları kullanıldığında kullanılır).
-target
-groups
-testrunfactory
-listener
Aşağıdaki örneğimizde TestNG nesnesini mevcut bir testng.xml oluşturacağız.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\>TestNG_WORKSPACE.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
Bir java test sınıfı oluşturun, diyelim ki SampleTest.java.
Test sınıfınıza bir test yöntemi testPrintMessage () ekleyin.
TestPrintMessage () yöntemine bir Ek Açıklama @Test ekleyin.
Test koşulunu uygulayın ve TestNG'nin assertEquals API'sini kullanarak durumu kontrol edin.
Adlı bir java sınıf dosyası oluşturun SampleTest.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class SampleTest {
String message = "Hello World";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
Assert.assertEquals(message, messageUtil.printMessage());
}
}
Testng.xml oluştur
Sonra, testng.xml dosyası oluşturalım. C:\>TestNG_WORKSPACE, test senaryolarını yürütmek için. Bu dosya, testinizin tamamını XML biçiminde yakalar. Bu dosya, tüm test takımlarınızı ve parametrelerini, kod deponuzda kontrol edebileceğiniz veya iş arkadaşlarınıza e-posta gönderebileceğiniz tek bir dosyada açıklamanızı kolaylaştırır. Ayrıca, testlerinizin alt kümelerini çıkarmayı veya birkaç çalışma zamanı yapılandırmasını bölmeyi kolaylaştırır (örneğin, testngdatabase.xml yalnızca veritabanınızı uygulayan testleri çalıştırır).
<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Sample test Suite">
<test name = "Sample test">
<classes>
<class name = "SampleTest" />
</classes>
</test>
</suite>
Javac kullanarak test durumunu derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java SampleTest.java
Şimdi, <test> etiketinde tanımlanan test durumunu çalıştıracak olan testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
Hello World
===============================================
Sample test Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
Bir test suiteyazılım programının bir davranışını veya bir dizi davranışını test etmeyi amaçlayan test senaryoları koleksiyonudur. TestNG'de, kaynak kodunu test ederken bir paket tanımlayamayız, ancak paket yürütme özelliği olduğundan, bir XML dosyasıyla temsil edilir. Ayrıca, çalıştırılacak testlerin esnek konfigürasyonuna izin verir . Bir paket, bir veya daha fazla test içerebilir ve <suite> etiketiyle tanımlanır.
<suite>, testng.xml dosyanızın kök etiketidir. Sırasıyla birkaç <test> bölümünden oluşan bir test takımını açıklar.
Aşağıdaki tablo <suite> 'in kabul ettiği tüm yasal nitelikleri listeler.
Sr.No. | Öznitelik ve Açıklama |
---|---|
1 | name Bu süitin adı. Bu birmandatory öznitelik. |
2 | verbose Bu çalıştırma için seviye veya ayrıntı. |
3 | parallel TestNG'nin bu paketi çalıştırmak için farklı iş parçacıkları çalıştırıp çalıştırmayacağı. |
4 | thread-count Paralel mod etkinleştirilmişse kullanılacak iş parçacığı sayısı (aksi takdirde yok sayılır). |
5 | annotations Testlerinizde kullandığınız ek açıklamaların türü. |
6 | time-out Bu testte bulunan tüm test yöntemlerinde kullanılacak varsayılan zaman aşımı. |
Bu bölümde, Test Suite kullanarak birlikte çalıştırabileceğiniz iki test sınıfına sahip bir örnek göstereceğiz, Test1 ve Test2.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\>JUNIT_WORKSPACE.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfları Oluşturun
Adlı bir java sınıf dosyası oluşturun Test1.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class Test1 {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
Assert.assertEquals(message, messageUtil.printMessage());
}
}
Adlı bir java sınıf dosyası oluşturun Test2.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class Test2 {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message,messageUtil.salutationMessage());
}
}
Şimdi, testng.xml dosyasını şuraya yazalım: C:\>TestNG_WORKSPACE, aşağıdaki gibi <suite> etiketini içerecektir -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "exampletest1">
<classes>
<class name = "Test1" />
</classes>
</test>
<test name = "exampletest2">
<classes>
<class name = "Test2" />
</classes>
</test>
</suite>
Suite1 şunları içerir: exampletest1 ve exampletest2.
Tüm java sınıflarını javac kullanarak derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java Test1.java Test2.java
Şimdi, sağlanan Test Case sınıfında tanımlanan test senaryosunu çalıştıracak olan testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 2, Failures: 0, Skips: 0
===============================================
Ayrıca test çıktı klasörünü de kontrol edebilirsiniz . Suite1 klasörünün altında, aşağıdaki gibi görünen iki html dosyasını görebilirsiniz: exampletest1.html ve exampletest2.html -
Bazen, kodumuz hazır değildir ve bu yöntemi / kodu test etmek için yazılmış test senaryosu başarısız olur. Bu gibi durumlarda ek açıklama@Test(enabled = false) bu test durumunu devre dışı bırakmaya yardımcı olur.
Bir test yöntemi @Test (etkinleştirildi = yanlış) ile açıklanmışsa , teste hazır olmayan test durumu atlanır.
Şimdi, @Test (enabled = false) eylemini görelim.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\>TestNG_WORKSPACE.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
Bir java test sınıfı oluşturun, diyelim ki IgnoreTest.java.
Test sınıfınıza test yöntemleri, testPrintMessage () ve testSalutationMessage () ekleyin.
TestPrintMessage () yöntemine bir Ek Açıklama @Test (enabled = false) ekleyin.
Adlı bir java sınıf dosyası oluşturun IgnoreTest.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class IgnoreTest {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test(enabled = false)
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = "Manisha";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
}
Testng.xml oluştur
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "IgnoreTest" />
</classes>
</test>
</suite>
MessageUtil'i derleyin ve javac kullanarak durum sınıflarını test edin.
C:\TestNG_WORKSPACE>javac MessageUtil.java IgnoreTest.java
Şimdi, testng.xml dosyasını çalıştırın; bu, testPrintMessage () 'ı, sağlanan Test Case sınıfında tanımlanan test olayını çalıştırmaz.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın. testPrintMessage () test durumu test edilmemiştir.
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
Bir sonraki bölümde tartışılacak olan bir grup testi de göz ardı edebilirsiniz.
Grup testi, TestNG'de JUnit çerçevesinde bulunmayan yenilikçi bir özelliktir. Yöntemleri uygun bölümlere dağıtmanıza ve gelişmiş test yöntemlerini gruplandırmanıza olanak tanır.
Yalnızca gruplara ait olan yöntemleri bildirmekle kalmaz, aynı zamanda diğer grupları içeren grupları da belirtebilirsiniz. Ardından, TestNG çağrılabilir ve belirli bir grup kümesini (veya normal ifadeleri) içermesi istenirken başka bir grubu hariç tutması istenebilir.
Grup testleri, testlerinizi nasıl bölümlere ayıracağınız konusunda maksimum esneklik sağlar ve arka arkaya iki farklı test grubu çalıştırmak istiyorsanız hiçbir şeyi yeniden derlemenizi gerektirmez.
Gruplar, testng.xml dosyanızda <groups> etiketi kullanılarak belirtilir. <test> veya <suite> etiketinin altında bulunabilir. <suite> etiketinde belirtilen gruplar, altındaki tüm <test> etiketleri için geçerlidir.
Şimdi, grup testinin nasıl çalıştığını görmek için bir örnek alalım.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\> TestNG_WORKSPACE.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "tutorialspoint" to the message
public String salutationMessage() {
message = "tutorialspoint" + message;
System.out.println(message);
return message;
}
// add "www." to the message
public String exitMessage() {
message = "www." + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
GroupTestExample.java gibi bir java test sınıfı oluşturun.
Test sınıfınıza test yöntemleri, testPrintMessage () ve testSalutationMessage () ekleyin.
Test yöntemini iki kategoride gruplayın -
Check-in tests (checkintest)- Bu testler, yeni kod gönderilmeden önce çalıştırılmalıdır. Genellikle hızlı olmalılar ve hiçbir temel işlevin bozulmadığından emin olmalıdırlar.
Functional tests (functest) - Bu testler yazılımınızın tüm işlevlerini kapsamalı ve günde en az bir kez çalıştırılmalıdır, ancak ideal olarak bunları sürekli olarak çalıştırmak isteyebilirsiniz.
Adlı java sınıf dosyasını oluşturun GroupTestExample.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class GroupTestExample {
String message = ".com";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "functest", "checkintest" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = ".com";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(groups = { "checkintest" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "tutorialspoint" + ".com";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "functest" })
public void testingExitMessage() {
System.out.println("Inside testExitMessage()");
message = "www." + "tutorialspoint"+".com";
Assert.assertEquals(message, messageUtil.exitMessage());
}
}
Testng.xml oluştur
İçinde testng.xml oluşturun C:\> TestNG_WORKSPACE, test senaryolarını yürütmek için. Burada, sadece grup functestine ait olan testleri yapıyor olacağız .
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<run>
<include name = "functest" />
</run>
</groups>
<classes>
<class name = "GroupTestExample" />
</classes>
</test>
</suite>
Javac kullanarak MessageUtil, Test vaka sınıflarını derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java GroupTestExample.java
Şimdi, grup functest'e ait olduğu için sadece testPrintMessage () yöntemini çalıştıracak olan testng.xml dosyasını çalıştırın .
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın. Yalnızca testPrintMessage () yöntemi yürütülür.
Inside testPrintMessage()
.com
Inside testExitMessage()
www..com
===============================================
Suite1
Total tests run: 2, Failures: 1, Skips: 0
===============================================
Gruplar Grubu
Gruplar ayrıca başka grupları da içerebilir. Bu gruplar denirMetaGroups. Örneğin, bir grup tanımlamak isteyebilirsiniz tüm kapsamaktadır checkintest ve functest . Testng.xml dosyamızı aşağıdaki gibi değiştirelim -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<define name = "all">
<include name = "functest"/>
<include name = "checkintest"/>
</define>
<run>
<include name = "all"/>
</run>
</groups>
<classes>
<class name = "GroupTestExample" />
</classes>
</test>
</suite>
Yukarıdaki testng.xml dosyasını yürütmek, üç testi de çalıştıracak ve size aşağıdaki sonucu verecektir -
Inside testPrintMessage()
.com
Inside testSalutationMessage()
tutorialspoint.com
Inside testExitMessage()
www.tutorialspoint.com
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
Hariç Tutma Grupları
Aşağıda gösterildiği gibi <exclude> etiketini kullanarak bir grubu yok sayabilirsiniz -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<define name = "all">
<exclude name = "functest"/>
<include name = "checkintest"/>
</define>
<run>
<include name = "all"/>
</run>
</groups>
<classes>
<class name = "GroupTestExample" />
</classes>
</test>
</suite>
TestNG, kodun istisna işlemesini izleme seçeneği sunar. Bir kodun istenen bir istisnayı atıp atmadığını test edebilirsiniz. İşteexpectedExceptionsparametresi @Test ek açıklamasıyla birlikte kullanılır. Şimdi bakalım@Test(expectedExceptions) eylemde.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\> TestNG_WORKSPACE. PrintMessage () yönteminin içine bir hata koşulu ekleyin.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public void printMessage() {
System.out.println(message);
int a =0;
int b = 1/a;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
Bir java test sınıfı oluşturun, diyelim ki ExpectedExceptionTest.java.
TestPrintMessage () test durumuna beklenen bir ArithmeticException istisnası ekleyin.
Adlı bir java sınıf dosyası oluşturun ExpectedExceptionTest.java içinde C:\> TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class ExpectedExceptionTest {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test(expectedExceptions = ArithmeticException.class)
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
messageUtil.printMessage();
}
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message,messageUtil.salutationMessage());
}
}
Test Çalıştırıcısı Oluştur
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "ExpectedExceptionTest" />
</classes>
</test>
</suite>
Javac kullanarak MessageUtil, Test vaka sınıflarını derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java TestJunit.java
Şimdi, sağlanan Test Case sınıfında tanımlanan test olaylarını çalıştıracak Test Runner'ı çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın. testPrintMessage () test durumu geçilecek.
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 2, Failures: 0, Skips: 0
===============================================
Bazen, bir test senaryosundaki yöntemleri belirli bir sırayla çağırmanız gerekebilir veya yöntemler arasında bazı verileri ve durumu paylaşmak isteyebilirsiniz. Bu tür bir bağımlılık, test yöntemleri arasında açık bağımlılıkların beyanını desteklediği için TestNG tarafından desteklenir.
TestNG, aşağıdakilerden biri ile bağımlılıkları belirlemenizi sağlar:
@Test annotations, OR'da özniteliğin kullanılışı bağlıdırOnMethods .
@Test ek açıklamalarında bağımlıOnGroups özniteliğini kullanma .
BağımlıOnMethods Kullanan Örnek
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\>TestNG_WORKSPACE.
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
DependencyTestUsingAnnotation.java gibi bir java test sınıfı oluşturun.
Test sınıfınıza test yöntemleri, testPrintMessage () ve testSalutationMessage () ve initEnvironmentTest () ekleyin.
Öznitelik ekleyin dependsOnMethods = {"initEnvironmentTest"} @Test ek açıklamasına testSalutationMessage() yöntem.
Bir java sınıfı dosya adı oluşturun DependencyTestUsingAnnotation.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = "Manisha";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(dependsOnMethods = { "initEnvironmentTest" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test
public void initEnvironmentTest() {
System.out.println("This is initEnvironmentTest");
}
}
Testng.xml oluştur
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "DependencyTestUsingAnnotation" />
</classes>
</test>
</suite>
Javac kullanarak MessageUtil, Test vaka sınıflarını derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java
Şimdi, testSalutationMessage () yöntemini yalnızca initEnvironmentTest () yönteminin yürütülmesinden sonra çalıştıracak olan testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
BağımlıOnGroups Kullanan Örnek
Tüm gruplara bağlı olan yöntemlere de sahip olabilirsiniz. Bunu göstermek için bir örnek verelim.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, MessageUtil.java içinde C:\>TestNG_WORKSPACE.
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Test Vaka Sınıfı Oluşturun
DependencyTestUsingAnnotation.java gibi bir java test sınıfı oluşturun.
Test yöntemlerini, testPrintMessage () testSalutationMessage () ve initEnvironmentTest () 'i test sınıfınıza ekleyin ve bunları "init" grubuna ekleyin.
Özniteliği ekleyin dependsOnMethods = {"init.*"} @Test ek açıklamasına testSalutationMessage() yöntem.
Adlı bir java sınıf dosyası oluşturun DependencyTestUsingAnnotation.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "init" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = "Manisha";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(dependsOnGroups = { "init.*" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "init" })
public void initEnvironmentTest() {
System.out.println("This is initEnvironmentTest");
}
}
Bu örnekte, testSalutationMessage (), "init. *" Normal ifadesiyle eşleşen herhangi bir gruba bağlı olarak bildirilir; bu, testPrintMessage () ve initEnvironmentTest () yöntemlerinin her zaman testSalutationMessage () 'dan önce çağrılacağını garanti eder.
Bağlı bir yöntem başarısız olursa ve ona sıkı bir bağımlılığınız varsa (her zamanRun = false, varsayılan değerdir), ona bağlı olan yöntemler BAŞARISIZ olarak değil, ATLA olarak işaretlenir. Atlanan yöntemler, nihai raporda olduğu gibi rapor edilecektir (HTML'de Kırmızı veya Yeşil olmayan bir renkte), bu da önemlidir, çünkü atlanan yöntemler mutlaka başarısızlık değildir.
Testng.xml oluştur
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "DependencyTestUsingAnnotation" />
</classes>
</test>
</suite>
Javac kullanarak MessageUtil, Test vaka sınıflarını derleyin.
C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java
Şimdi, testSalutationMessage () yöntemini yalnızca initEnvironmentTest () yönteminin yürütülmesinden sonra çalıştıracak olan testng.xml dosyasını çalıştırın .
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
bağlıdırOnGroups Vs bağlıdırOnMethods
Grupları kullanırken, artık yeniden düzenleme sorunlarına maruz kalmıyoruz. SubsOnGroups veya groups özniteliklerini değiştirmediğimiz sürece, testlerimiz uygun bağımlılıkların ayarlanmasıyla çalışmaya devam edecektir.
Bağımlılık grafiğine yeni bir yöntemin eklenmesi gerektiğinde, tek yapmamız gereken onu doğru gruba koymak ve doğru gruba bağlı olduğundan emin olmaktır. Başka bir yöntemi değiştirmemize gerek yok.
TestNG'de bulunan bir başka ilginç özellik ise parametric testing. Çoğu durumda, iş mantığının çok çeşitli testler gerektirdiği bir senaryo ile karşılaşırsınız.Parameterized tests geliştiricilerin aynı testi farklı değerler kullanarak defalarca çalıştırmasına olanak tanır.
TestNG, parametreleri iki farklı yoldan doğrudan test yöntemlerinize aktarmanıza olanak tanır -
- Testng.xml ile
- Veri Sağlayıcılarla
Testng.xml ile Parametreleri Geçirme
Bu teknikle, testng.xml dosyasında basit parametreleri tanımlar ve ardından kaynak dosyalarda bu parametrelere başvurursunuz . Parametreleri geçirmek için bu tekniğin nasıl kullanılacağını göstermek için bir örnek verelim.
Test Vaka Sınıfı Oluşturun
ParameterizedTest1.java gibi bir java test sınıfı oluşturun.
Test sınıfınıza test yöntemi parameterTest () ekleyin. Bu yöntem, girdi parametresi olarak bir dizge alır.
@Parameters ("myName") ek açıklamasını bu yönteme ekleyin . Parametre, bir sonraki adımda göreceğimiz testng.xml'den bir değer geçirilecektir.
Adlı bir java sınıf dosyası oluşturun ParameterizedTest1.java içinde C:\>TestNG_WORKSPACE.
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Test
@Parameters("myName")
public void parameterTest(String myName) {
System.out.println("Parameterized value is : " + myName);
}
}
Testng.xml oluştur
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<parameter name = "myName" value="manisha"/>
<classes>
<class name = "ParameterizedTest1" />
</classes>
</test>
</suite>
Parametreleri <suite> seviyesinde de tanımlayabiliriz. MyName'i hem <suite> hem de <test> düzeyinde tanımladığımızı varsayalım . Bu tür durumlarda, normal kapsam belirleme kuralları geçerlidir. Bu, <test> etiketi içindeki herhangi bir sınıfın <test> içinde tanımlanan parametrenin değerini göreceği, testng.xml dosyasının geri kalanındaki sınıfların <suite> içinde tanımlanan değeri göreceği anlamına gelir.
Javac kullanarak test senaryosu sınıfını derleyin.
C:\TestNG_WORKSPACE>javac ParameterizedTest1.java
Şimdi, parameterTest yöntemini çalıştıracak testng.xml'yi çalıştırın . TestNG, önce <test> etiketinde myName adlı bir parametre bulmaya çalışır ve ardından bulamazsa, onu çevreleyen <suit> etiketinde arar.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
Parameterized value is : manisha
===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
TestNG, testng.xml'de belirtilen değeri otomatik olarak parametrenizin türüne dönüştürmeyi deneyecektir. İşte desteklenen türler -
- String
- int/Integer
- boolean/Boolean
- byte/Byte
- char/Character
- double/Double
- float/Float
- long/Long
- short/Short
Veri Sağlayıcılarla Parametreleri Geçirme
Java'dan oluşturulması gereken karmaşık parametreleri veya parametreleri (karmaşık nesneler, bir özellik dosyasından veya bir veritabanından okunan nesneler, vb.) İletmeniz gerektiğinde, parametreler Veri Sağlayıcılar kullanılarak geçirilebilir.
Veri Sağlayıcı, ek not verilen bir yöntemdir @DataProvider. Bu ek açıklamanın yalnızca bir dize özelliği vardır: adı. Ad sağlanmadıysa, veri sağlayıcısının adı varsayılan olarak yöntemin adını alır. Bir veri sağlayıcı, bir dizi nesne döndürür.
Aşağıdaki örnekler, veri sağlayıcıların nasıl kullanılacağını göstermektedir. İlk örnek, parametre olarak Vector, String veya Integer kullanan @DataProvider hakkındadır ve ikinci örnek, parametre olarak nesne kullanan @DataProvider hakkındadır.
örnek 1
Burada @DataProvider, parametre olarak Tamsayı ve Boolean'ı iletir.
Create Java class
PrimeNumberChecker.java adlı bir java sınıfı oluşturun. Bu sınıf, sayının asal olup olmadığını kontrol eder. Bu sınıfı şurada oluşturC:\>TestNG_WORKSPACE.
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i < (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
}
}
return true;
}
}
Create Test Case Class
ParamTestWithDataProvider1.java gibi bir java test sınıfı oluşturun.
Ek açıklamayı kullanarak Veri sağlayıcı olarak tanımlanan primeNumbers () yöntemini tanımlayın. Bu yöntem bir dizi nesne döndürür.
Test yöntemini testPrimeNumberChecker () test sınıfınıza ekleyin. Bu yöntem, girdi parametreleri olarak bir Tamsayı ve Boole alır. Bu yöntem, geçirilen parametrenin bir asal sayı olup olmadığını doğrular.
@Test (dataProvider = "test1") ek açıklamasını bu yönteme ekleyin . DataProvider özelliği "test1" ile eşleştirilir.
Adlı bir java sınıf dosyası oluşturun ParamTestWithDataProvider1.java içinde C:\>TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider1 {
private PrimeNumberChecker primeNumberChecker;
@BeforeMethod
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
}
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] {{2, true}, {6, false}, {19, true}, {22, false}, {23, true}};
}
// This test will run 4 times since we have 5 parameters defined
@Test(dataProvider = "test1")
public void testPrimeNumberChecker(Integer inputNumber, Boolean expectedResult) {
System.out.println(inputNumber + " " + expectedResult);
Assert.assertEquals(expectedResult, primeNumberChecker.validate(inputNumber));
}
}
Create testng.xml
Bir testng.xml oluşturun C:\>TestNG_WORKSPACE Test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "ParamTestWithDataProvider1" />
</classes>
</test>
</suite>
Javac kullanarak Test durumu sınıfını derleyin.
C:\TestNG_WORKSPACE>.javac ParamTestWithDataProvider1.java PrimeNumberChecker.java
Şimdi testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
2 true
6 false
19 true
22 false
23 true
===============================================
Suite1
Total tests run: 5, Failures: 0, Skips: 0
===============================================
Örnek 2
Burada @DataProvider, Object'i parametre olarak iletir.
Create Java class
Get / set yöntemleriyle basit bir nesne olan bir java sınıfı Bean.java oluşturun. C:\>TestNG_WORKSPACE.
public class Bean {
private String val;
private int i;
public Bean(String val, int i) {
this.val = val;
this.i = i;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
Create Test Case Class
ParamTestWithDataProvider2.java gibi bir java test sınıfı oluşturun.
Ek açıklama kullanılarak veri sağlayıcı olarak tanımlanan primeNumbers () yöntemini tanımlayın. Bu yöntem bir nesne dizisi döndürür.
Test yöntemini testMethod () test sınıfınıza ekleyin. Bu yöntem, parametre olarak bir nesne çekirdeğini alır.
@Test (dataProvider = "test1") ek açıklamasını bu yönteme ekleyin . DataProvider özelliği "test1" ile eşleştirilir.
İçinde ParamTestWithDataProvider2.java adlı bir java sınıfı dosyası oluşturun. C:\>TestNG_WORKSPACE.
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider2 {
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { new Bean("hi I am the bean", 111) } };
}
@Test(dataProvider = "test1")
public void testMethod(Bean myBean) {
System.out.println(myBean.getVal() + " " + myBean.getI());
}
}
Create testng.xml
İçinde testng.xml oluşturun C:\>TestNG_WORKSPACE test senaryolarını yürütmek için.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "ParamTestWithDataProvider2" />
</classes>
</test>
</suite>
Javac kullanarak test senaryosu sınıfını derleyin.
C:\TestNG_WORKSPACE>javac ParamTestWithDataProvider2.java Bean.java
Şimdi testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Çıkışı doğrulayın.
hi I am the bean 111
===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
Artık TestNG ve çeşitli testlerini anladığınıza göre, şimdiye kadar mevcut JUnit kodunuzu nasıl yeniden düzenleyeceğiniz konusunda endişelenmiş olmalısınız. TestNG, JUnit'ten TestNG'ye kendi hızınızda geçiş yapmanın bir yolunu sağladığı için endişelenmenize gerek yok. Mevcut JUnit test durumlarınızı TestNG kullanarak çalıştırabilirsiniz.
TestNG, JUnit testlerini otomatik olarak tanıyabilir ve çalıştırabilir, böylece TestNG'yi tüm mevcut testleriniz için bir koşucu olarak kullanabilir ve TestNG kullanarak yeni testler yazabilirsiniz. Tek yapmanız gereken, JUnit kitaplığını TestNG sınıf yoluna koymak, böylece JUnit sınıflarını bulup kullanabilmek, test çalıştırıcınızı Ant'ta JUnit'ten TestNG'ye değiştirmek ve ardından TestNG'yi "karışık" modda çalıştırmaktır. Bu sayede tüm testlerinizi aynı projede, hatta aynı pakette bile yaptırabilir ve TestNG'yi kullanmaya başlayabilirsiniz. Bu yaklaşım, mevcut JUnit testlerinizi aşamalı olarak TestNG'ye dönüştürmenize de olanak tanır.
TestNG'nin bu inanılmaz yeteneğini göstermek için bir örnek verelim.
JUnit Test Durumu Sınıfı Oluşturun
JUnit test sınıfı olan bir java sınıfı oluşturun, TestJunit.java in C:\>TestNG_WORKSPACE.
import org.junit.Test;
import static org.testng.AssertJUnit.assertEquals;
public class TestJunit {
@Test
public void testAdd() {
String str = "Junit testing using TestNG";
AssertEquals("Junit testing using TestNG",str);
}
}
Şimdi, testng.xml dosyasını şuraya yazalım: C:\>TestNG_WORKSPACE, aşağıdaki gibi <suite> etiketini içerecektir -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "Converted JUnit suite" >
<test name = "JUnitTests" junit="true">
<classes>
<class name = "TestJunit" />
</classes>
</test>
</suite>
JUnit test durumlarını yürütmek için, junit = "true" özelliğini yukarıdaki xml'de olduğu gibi tanımlayın . JUnit test senaryosu sınıfı TestJunit, sınıf adında tanımlanır.
JUnit 4 için TestNG, testlerinizi çalıştırmak için org.junit.runner.JUnitCore çalıştırıcısını kullanacaktır .
Tüm java sınıflarını javac kullanarak derleyin.
C:\TestNG_WORKSPACE>javac TestJunit.java
Şimdi, JUnit test durumunu TestNG olarak çalıştıracak olan testng.xml dosyasını çalıştırın.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE:C:\TestNG_WORKSPACE\lib\junit-4.11.jar" org.testng.TestNG testng.xml
Burada junit-4.11.jar dosyasını C: \ TestNG_WORKSPACE \ lib \ junit-4.11.jar altına yerleştirdik.
Çıkışı doğrulayın.
===============================================
Converted JUnit suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
Raporlama, kullanıcının test yürütmesinin sonucunu, başarısızlık noktasını ve başarısızlık nedenlerini anlamasına yardımcı olduğundan, herhangi bir test yürütmenin en önemli parçasıdır. Diğer yandan, günlük kaydı, yürütme akışına göz kulak olmak veya herhangi bir hata durumunda hata ayıklamak için önemlidir.
TestNG, varsayılan olarak, test yürütmesi için farklı türde bir rapor oluşturur. Bu, bir HTML ve bir XML rapor çıktısı içerir. TestNG ayrıca kullanıcılarının kendi muhabirlerini yazmalarına ve bunu TestNG ile kullanmalarına izin verir. Çalışma zamanında TestNG tarafından bildirilen kendi kaydedicilerinizi yazma seçeneği de vardır.
TestNG ile rapor oluşturmanın iki yolu vardır -
Listeners- Bir dinleyici sınıfını uygulamak için, sınıfın org.testng.ITestListener arabirimini uygulaması gerekir . Bu sınıflar, test başladığında, bittiğinde, başarısız olduğunda, atladığında veya başarılı olduğunda TestNG tarafından çalışma zamanında bildirilir.
Reporters- Bir raporlama sınıfını uygulamak için, sınıfın bir org.testng.IReporter arabirimi uygulaması gerekir . Bu sınıflar, tüm süit çalışması bittiğinde çağrılır. Tüm test çalıştırmasının bilgilerini içeren nesne çağrıldığında bu sınıfa aktarılır.
Bu bölümde, dört farklı raporlama ve kayıt tutma durumunu göstermek için dört farklı örnek vereceğiz -
Sr.No. | Durum ve Örnek |
---|---|
1 | Özel Günlük Kaydı Bu örnek, kendi kaydedicinizi nasıl yazacağınızı göstermektedir. |
2 | Özel Muhabir Bu örnek, kendi muhabirinizi nasıl yazacağınızı göstermektedir. |
3 | HTML ve XML raporu Bu örnek, TestNG tarafından oluşturulan varsayılan HTML ve XML raporunu göstermektedir. |
4 | JUnit Raporları Bu örnek, TestNG raporlarından JUnit raporlarının nasıl oluşturulacağını göstermektedir. |
Bu bölümde, TestNG'nin ANT kullanılarak nasıl çalıştırılacağını göstereceğiz. Aşağıda verilen adımları takip edelim -
Adım 1: Apache Ant'ı indirin
Apache Ant'ın en son sürümünü indirin
işletim sistemi | Arşiv Adı |
---|---|
pencereler | apache-ant-1.8.4-bin.zip |
Linux | apache-ant-1.8.4-bin.tar.gz |
Mac | apache-ant-1.8.4-bin.tar.gz |
Adım 2: Karınca Ortamını Ayarlayın
Yı kur ANT_HOMEANT kitaplıklarının makinenizde depolandığı temel dizin konumuna işaret etmek için ortam değişkeni. Ant kitaplıklarını apache-ant-1.8.4 klasöründe sakladığımızı varsayalım.
işletim sistemi | Çıktı |
---|---|
pencereler | ANT_HOME ortam değişkenini C: \ Program Files \ Apache Software Foundation \ apache-ant-1.8.4 olarak ayarlayın. |
Linux | ANT_HOME = / usr / local / apache-ant-1.8.4'ü dışa aktar |
Mac | ANT_HOME = / Library / apache-ant-1.8.4'ü dışa aktar |
Aşağıdaki gibi Sistem Yoluna Ant derleyici konumunu ekleyin -
işletim sistemi | Açıklama |
---|---|
pencereler | % ANT_HOME \ bin dizesini sistem değişkeninin, Yol'un sonuna ekleyin. |
Linux | PATH dışa aktar =$PATH:$ANT_HOME / bin / |
Mac | Gerekli değil. |
3. Adım: TestNG Arşivini İndirin
Gerekli jar dosyalarını indirin http://www.testng.org.
işletim sistemi | Arşiv adı |
---|---|
pencereler | testng-6.8.jar |
Linux | testng-6.8.jar |
Mac | testng-6.8.jar |
Adım 4: Proje Yapısı Oluşturun
Bir klasör oluşturun TestNGWithAnt içinde C:\>TestNG_WORKSPACE.
Bir klasör oluşturun src içinde C:\>TestNG_WORKSPACE>TestNGWithAnt.
Bir klasör oluşturun test içinde C:\>TestNG_WORKSPACE>TestNGWithAnt.
Bir klasör oluşturun lib içinde C:\>TestNG_WORKSPACE>TestNGWithAnt.
Oluşturmak MessageUtil sınıf C:\>TestNG_WORKSPACE>TestNGWithAnt>src Klasör.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public void printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
TestMessageUtil sınıfı oluşturun C:\>TestNG_WORKSPACE>TestNGWithAnt>src Klasör.
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestMessageUtil {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
Assert.assertEquals(message,messageUtil.printMessage());
}
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message,messageUtil.salutationMessage());
}
}
Testng-6.8.jar dosyasını kopyalayın C:\>TestNG_WORKSPACE>TestNGWithAnt>lib Klasör.
ANT build.xml oluştur
Öncelikle TestNG Karınca görevini şu şekilde tanımlamamız gerekiyor -
<taskdef name = "testng" classname = "org.testng.TestNGAntTask">
<classpath>
<pathelement location = "lib/testng-6.8.jar"/>
</classpath>
</taskdef>
O zaman kullanacağız <testng> TestNG test senaryolarımızı yürütmek için Ant'ta görev.
build.xml dosya aşağıdaki gibidir -
<project name = "TestNGTest" default = "test" basedir = ".">
<!-- Define <testng> task -->
<taskdef name = "testng" classname = "org.testng.TestNGAntTask">
<classpath>
<pathelement location = "lib/testng-6.8.jar"/>
</classpath>
</taskdef>
<property name = "testdir" location = "test" />
<property name = "srcdir" location = "src" />
<property name = "libdir" location = "lib" />
<property name = "full-compile" value="true" />
<path id = "classpath.base"/>
<path id = "classpath.test">
<fileset dir = "${libdir}"> <include name = "**/*.jar" /> </fileset> <pathelement location = "${testdir}" />
<pathelement location = "${srcdir}" /> <path refid = "classpath.base" /> </path> <target name = "clean" > <delete verbose="${full-compile}">
<fileset dir = "${testdir}" includes="**/*.class" /> </delete> </target> <target name = "compile" depends="clean"> <javac srcdir = "${srcdir}" destdir = "${testdir}" verbose="${full-compile}">
<classpath refid = "classpath.test"/>
</javac>
</target>
<target name = "test" depends="compile">
<testng outputdir = "${testdir}" classpathref="classpath.test"> <xmlfileset dir = "${srcdir}" includes="testng.xml"/>
</testng>
</target>
</project>
Aşağıdaki Ant komutunu çalıştırın.
C:\TestNG_WORKSPACE\TestNGWithAnt>ant
Çıkışı doğrulayın.
test:
[testng] [TestNG] Running:
[testng] C:\TestNG_WORKSPACE\TestNGWithAnt\src\testng.xml
[testng]
[testng] Inside testPrintMessage()
[testng] Manisha
[testng] Inside testSalutationMessage()
[testng] Hi!Manisha
[testng]
[testng] ===============================================
[testng] Plug ANT test Suite
[testng] Total tests run: 2, Failures: 0, Skips: 0
[testng] ===============================================
[testng]
BUILD SUCCESSFUL
Total time: 1 second
Eclipse ile TestNG'yi kurmak için aşağıda verilen adımları izleyin -
1. Adım: TestNG Arşivini İndirin
TestNG jar dosyasının en son sürümünü şuradan indirin: http://www.testng.org
işletim sistemi | Arşiv adı |
---|---|
pencereler | testng-6.8.jar |
Linux | testng-6.8.jar |
Mac | testng-6.8.jar |
Yukarıdaki JAR dosyasını C: \> TestNG klasörüne kopyaladığınızı varsayıyoruz.
2. Adım: Eclipse ortamını ayarlayın
Tutulmayı açın → projeye sağ tıklayın ve özelliğe gidin → Yol Oluştur → Oluşturma Yolunu Yapılandır ve Testng-6.8.jar'ı Dış Jar Ekle düğmesini kullanarak kitaplıklara ekleyin .
Eclipse'inizin dahili TestNG eklentisine sahip olduğunu varsayıyoruz; mevcut değilse, lütfen güncelleme sitesini kullanarak en son sürümü edinin.
Eclipse IDE'nizde, Yardım / Yazılım güncellemeleri / Bul ve Yükle'yi seçin .
Yüklenecek yeni özellikleri arayın.
Yeni uzak site.
Eclipse 3.4 ve üstü için şunu girin: http://beust.com/eclipse.
Eclipse 3.3 ve altı için şunu girin: http://beust.com/eclipse1.
URL kontrol edilir yanındaki onay kutusunun ve tıklayın İleri .
Eclipse daha sonra süreç boyunca size rehberlik edecek.
Eclipse'iniz artık TestNG test senaryolarının geliştirilmesine hazır.
Adım 3: Eclipse'de TestNG Kurulumunu Doğrulayın
Herhangi bir konumda Eclipse'de TestNGProject projesi oluşturun.
Projede test etmek için bir MessageUtil sınıfı oluşturun.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
}
Projede TestNGExample test sınıfı oluşturun.
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestNGExample {
String message = "Hello World";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
Assert.assertEquals(message,messageUtil.printMessage());
}
}
Proje yapısı aşağıdaki gibi olmalıdır -
Son olarak, programa sağ tıklayıp TestNG olarak çalıştırarak programın çıktısını doğrulayın.
Sonucu doğrulayın.