在 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告