TestNG - Yazma Testleri
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 içine 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 @BeforeXXX ve @AfterXXX açıklamaları ile yapılandırılabilir (bunu TestNG - Yürütme Prosedürü bölümünde göreceğiz ), bu da belirli bir noktadan önce ve sonra bazı Java mantığının gerçekleştirilmesine izin verir.
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 -