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