如何使用 TestNG 注释创建测试用例?
在 TestNG 中编写测试基本上涉及以下步骤 -
编写测试的业务逻辑并在代码中插入 TestNG 注释。
在 testng.xml 文件或 build.xml 中添加有关测试的信息(例如类名、要运行的组等)。
运行 TestNG。
在本文中,我们将看到一个完整的 TestNG 测试示例,使用 POJO 类、业务逻辑类和测试 xml,它将由 TestNG 运行。
解决此问题的方法/算法
步骤 1:在 src 中创建 EmployeeDetails.java,它是一个 POJO 类,如程序代码所示。
EmployeeDetails 类用于 −
获取/设置员工姓名的值。
获取/设置员工月薪的值。
获取/设置员工年龄的值。
步骤 2:在 src 中创建一个 EmpBusinessLogic.java,其中包含业务逻辑。
EmpBusinessLogic 类用于计算 −
员工年薪。
员工评估金额。
步骤 3:创建一个名为 TestNG 的类src 中的 TestEmployeeDetails.java。TestNG 类是包含至少一个 TestNG 注释的 Java 类。此类包含要测试的测试用例。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 名称 public String getName() { return name; } // @param name 要设置的名称 public void setName(String name) { this.name = name; } // @return 每月工资 public double getMonthlySalary() { return monthlySalary; } // @param monthlySalary 要设置的每月工资 public void setMonthlySalary(double monthlySalary) { this.monthlySalary = monthlySalary; } // @return 年龄 public int getAge() { return age; } // @param age 要设置的年龄 public void setAge(int age) { this.age = age; } }
以下是常见 TestNG 类的代码 - EmpBusinessLogic:
src/ EmpBusinessLogic.java
public class EmpBusinessLogic { // 计算员工年薪 public double calculateYearlySalary(EmployeeDetails employeeDetails) { double yearlySalary = 0; yearlySalary = employeeDetails.getMonthlySalary() * 12; return yearlySalary; } // 计算员工考核金额 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 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 ===============================================