TestNG -編寫測試



在 TestNG 中編寫測試基本上包括以下步驟:

  • 編寫測試的業務邏輯並在程式碼中插入 TestNG 註解。

  • 在 testng.xml 檔案或 build.xml 檔案中新增有關測試的資訊(例如,類名、要執行的組等)。

  • 執行 TestNG。

在這裡,我們將看到一個使用 POJO 類、業務邏輯類和測試 XML 的完整 TestNG 測試示例,TestNG 將執行該示例。

/work/testng/src 中建立EmployeeDetails.java,這是一個 POJO 類。

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;
   }
}

EmployeeDetails 類用於:

  • 獲取/設定員工姓名的值。
  • 獲取/設定員工月薪的值。
  • 獲取/設定員工年齡的值。

/work/testng/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;
   }
}

EmpBusinessLogic 類用於計算:

  • 員工的年薪。
  • 員工的考核金額。

現在,讓我們在 /work/testng/src 中建立一個名為 TestEmployeeDetails.java 的 TestNG 類。TestNG 類是一個包含至少一個 TestNG 註解的 Java 類。此類包含要測試的測試用例。TestNG 測試可以透過 @BeforeXXX 和 @AfterXXX 註解進行配置(我們將在章節TestNG - 執行流程中看到這一點),允許在某個點之前和之後執行一些 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");
   }

   // 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");
   }
}

TestEmployeeDetails 類用於測試EmpBusinessLogic 類的方法。它執行以下操作:

  • 測試員工的年薪。

  • 測試員工的考核金額。

在執行測試之前,必須使用特殊的 XML 檔案(通常命名為 testng.xml)配置 TestNG。此檔案的語法非常簡單,其內容如下所示。在 /work/testng/src 中建立此檔案。

<?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>

上述檔案的詳細資訊如下:

  • 一個套件由一個 XML 檔案表示。它可以包含一個或多個測試,並由 <suite> 標記定義。

  • <test> 標記表示一個測試,可以包含一個或多個 TestNG 類。

  • <class> 標記表示一個 TestNG 類。它是一個包含至少一個 TestNG 註解的 Java 類。它可以包含一個或多個測試方法。

使用 javac 編譯測試用例類。

/work/testng/src$ javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java

現在使用以下命令執行 TestNG:

/work/testng/src$ java org.testng.TestNG testng.xml

如果所有操作都正確完成,您應該在控制檯中看到測試結果。此外,TestNG 在當前目錄中自動建立的名為 test-output 的資料夾中建立一個非常好的 HTML 報告。如果您開啟它並載入 index.html,您將看到類似於下圖中的頁面:

Writing Tests
廣告
© . All rights reserved.