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

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.