如何使用 TestNG 註解建立測試用例?
在 TestNG 中編寫測試基本上涉及以下步驟:
編寫測試的業務邏輯並在程式碼中插入 TestNG 註解。
在 testng.xml 檔案或 build.xml 檔案中新增有關測試的資訊(例如,類名、要執行的組等)。
執行 TestNG。
在本文中,我們將看到一個完整的 TestNG 測試示例,使用 POJO 類、業務邏輯類和一個測試 xml,這些將由 TestNG 執行。
解決此問題的方法/演算法
步驟 1:在 src 中建立EmployeeDetails.java,這是一個 POJO 類,如程式程式碼所示。
EmployeeDetails 類用於:
獲取/設定員工姓名的值。
獲取/設定員工月薪的值。
獲取/設定員工年齡的值。
步驟 2:在 src 中建立一個EmpBusinessLogic.java,其中包含業務邏輯。
EmpBusinessLogic 類用於計算:
員工的年薪。
員工的加薪金額。
步驟 3:在 src 中建立一個名為TestEmployeeDetails.java的 TestNG 類。TestNG 類是一個 Java 類,其中包含至少一個 TestNG 註解。此類包含要測試的測試用例。TestNG 測試也可以透過 @BeforeXXX 和 @AfterXXX 註解進行配置。
TestEmployeeDetails 類用於測試 EmpBusinessLogic 類的 方法。它執行以下操作:
測試員工的年薪。
測試員工的加薪金額。
步驟 4:現在,建立並執行 testNG.xml 或直接在 IDE 中執行 TestNG 類,或者使用命令列編譯並執行它。
在輸出中,使用者可以看到預期的和實際的加薪以及薪資。
示例
以下程式碼用於通用 TestNG 類 - EmployeeDetails:
src/ EmployeeDetails.java
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;
}
}
以下程式碼用於通用 TestNG 類 - EmpBusinessLogic:
src/ EmpBusinessLogic.java
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;
}
}
以下程式碼用於通用 TestNG 類 - TestEmployeeDetails:
src/ TestEmployeeDetails.java
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");
System.out.println("Expected Appraisal:500;"+" Actual Appraisal:"+appraisal);
}
// 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");
System.out.println("Expected Salary:9600;"+" Actual Salary:"+salary);
}
}
testng.xml
這是一個用於組織和執行 TestNG 測試用例的配置檔案。
當需要執行有限的測試而不是完整的套件時,它非常方便。
<?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>
輸出
Expected Appraisal:500; Actual Appraisal:500.0 Expected Salary:9600; Actual Salary:96000.0 =============================================== Suite1 Total tests run: 2, Passes: 2, Failures: 0, Skips: 0 ===============================================
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP