如何使用 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