如何使用 TestNG 注释创建测试用例?

testngrest assureddynamic programming更新于 2025/5/6 6:22:17

在 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
=============================================== 


相关文章