在 TestNG 中,Listeners(監聽器)是什麼意思?


TestNG 監聽器能夠監聽特定的事件。它本質上是一個介面,可以改變系統的行為。TestNG 監聽器用於日誌記錄和生成報告。

Selenium 中有兩個監聽器。它們列在下面:

  • TestNG 監聽器。

  • WebDriver 監聽器。

TestNG 可以配置監聽器來改變 TestNG 的預設行為。TestNG 監聽器被稱為 iTestListener(一個 TestNG 介面)。一個 Java 類實現 iTestListeners 並同時重寫其方法。這些方法中的每一個都會觸發一個事件。

TestNG 監聽器的功能列在下面。

  • iSuiteListener - 它包含 onStart() 和 onFinish() 方法。當一個 Java 類實現此監聽器時,TestNG 將分別在 TestNG 套件的開始和結束時呼叫 onStart() 和 onFinish() 方法。因此,在觸發我們的測試套件執行之前,TestNG 會選擇執行預置條件 onStart() 測試方法。類似地,在測試套件執行完成後,TestNG 會選擇執行後置條件 onFinish() 測試方法。

  • iTestListener - 其功能與 iSuiteListener 類似。唯一的區別是 iTestListener 適用於測試前後,而不是套件前後。它有七個方法。

  • onStart - 當測試開始時呼叫此測試方法。

  • onFinish - 在所有測試完成執行後呼叫此測試方法。

  • onTestSuccess - 每當測試成功時呼叫此測試方法。

  • onTestFailure - 每當測試失敗時呼叫此測試方法。

  • onTestSkipped - 每當測試被跳過時呼叫此測試方法。

  • onTestFailedButWithinSuccessPercentage - 每當使用 successPercentage 註解的測試方法不成功時呼叫此測試方法。但在請求的成功百分比內。

  • iInvokedMethodListener - 其功能與 iTestListener 和 iSuiteListener 類似。唯一的區別是 iInvokedMethodListener 適用於每個測試方法的前後。它有兩個方法。

  • afterInvocation - 在每個測試方法之後呼叫。

  • beforeInvocation - 在每個測試方法之前呼叫。

示例

使用 iTestListener。

package tutorialspoint;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
//ITestListener interface which implements Testng listeners
public class Listener implements ITestListener {
   @Override
   public void onTestStart(ITestResult result) {
      // TODO Auto-generated method stub
   }
   @Override
   public void onTestSuccess(ITestResult result) {
      // TODO Auto-generated method stub
   }
   @Override
   public void onTestFailure(ITestResult result) {
      // TODO Auto-generated method stub
      //screenshot code
      System.out.println
      ("Failed test case name" + result.getName());
   }
   @Override
   public void onTestSkipped(ITestResult result) {
      // TODO Auto-generated method stub
   }
   @Override
   public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
      // TODO Auto-generated method stub
   }
   @Override
   public void onStart(ITestContext context) {
      // TODO Auto-generated method stub
   }
   @Override
   public void onFinish(ITestContext context) {
      // TODO Auto-generated method stub
   }
}

在 Listener Java 類中,onTestFailure() 將使用 result.getName() 方法列印失敗的測試方法的名稱。

我們可以透過兩種方式將此 Listener 類新增到 Java 類檔案中。

  • 在 testng xml 檔案中使用 Listener 標籤。

  • 將 Listener 實現到測試用例類中。

示例

在 testng xml 檔案中使用 Listener 標籤。


<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Tutorialspoint Test">
   <listeners>
      <listener class-name="tutorialspoint.Listener"/>
   </listeners>
   <test name = "Test Cycle 1">
      <classes>
         <class name = "TestQA" />
      </classes>
   </test>
</suite>

在 <listeners> 標籤內,我們提到了 Listener 類的路徑。

示例

透過將 TestNG 監聽器實現到測試類中。

package TestTutorials;
import org.testng.annotations.Test;
// This code will implement TestNG listeners
@Listeners(tutorialspoint.Listener.class)
public class TestCase {
   @Test
   public void Login() {
      System.out.println("Login is successful");
   }
}

更新於: 2020年6月11日

540 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告