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

更新于: 2023-08-16

127 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告