TestNG - 基本注解 - 监听器



@Listeners 注解定义了测试类上的监听器。@Listeners 注解的方法监听某些事件,并在测试执行的每个阶段执行某些操作的同时跟踪测试执行情况。事件可以是任何内容,例如测试方法的成功、测试方法的失败、测试方法的开始等。

以下是一些允许您修改 TestNG 行为的监听器或接口

  • IAnnotationTransformer

  • IAnnotationTransformer2

  • IHookable

  • IInvokedMethodListener

  • IMethodInterceptor

  • IReporter

  • ISuiteListener

  • ITestListener

@Listeners 可以实现于 *类级别* 和 *套件级别*

以下是 @Listeners 注解支持的属性列表

属性 描述

value

扩展 org.testng.ITestNGListener 的类的数组

创建测试用例类

让我们看看如何使用 TestNG 监听器调用测试方法。

  • 创建一个 Java 测试类,例如,在 /work/testng/src 中创建 SimpleTestClass.java

  • 向您的测试类添加测试方法 sum() 和 testtofail()。

  • 向 sum() 和 testtofail() 方法添加注解 @Test。

以下是 SimpleTestClass.java 的内容

  import org.testng.Assert;
  import org.testng.annotations.Test;

  public class SimpleTestClass {

  	@Test
  	public void sum()
  	{
  		int sum=0;
  		int a=15;
  		int b=27;
  		sum=a+b;
  		System.out.println("sum="+sum);
  	}
  	@Test
  	public void testtofail()
  	{
  		System.out.println("Test case has failed");
  		Assert.assertTrue(false);
  	}
  }

创建监听器测试类

创建一个另一个 Java 类,例如,在 /work/testng/src 中创建 TestListener.java。我们将实现 ITestListener

  • ITestListener 包含以下方法

    • onTestStart - 当任何测试开始时调用 onTestStart 方法。

    • onTestSuccess - 当任何测试成功时调用 onTestSuccess 方法。

    • onTestFailure - 当任何测试失败时调用 onTestFailure 方法。

    • onTestSkipped - 当任何测试被跳过时调用 onTestSkipped 方法。

    • onTestFailedButWithinSuccessPercentage - 每次测试失败但在成功百分比范围内时调用此方法。

    • onFinish - 在所有测试执行完毕后调用 onFinish 方法。

TestListener.java 如下所示

  import org.testng.ITestContext;
  import org.testng.ITestListener;
  import org.testng.ITestResult;

  public class TestListener  implements ITestListener   {
  	@Override
  	public void onTestStart(ITestResult result) {
  	}

  	@Override
  	public void onTestSuccess(ITestResult result) {
  	System.out.println("Success of test cases and its details are : "+result.getName());
  	}

  	@Override
  	public void onTestFailure(ITestResult result) {
  	System.out.println("Failure of test cases and its details are : "+result.getName());
  	}

  	@Override
  	public void onTestSkipped(ITestResult result) {
  	System.out.println("Skip of test cases and its details are : "+result.getName());
  	}

  	@Override
  	public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
  	System.out.println("Failure of test cases and its details are : "+result.getName());
  	}

  	@Override
  	public void onStart(ITestContext context) {
  	// TODO Auto-generated method stub
  	}

  	@Override
  	public void onFinish(ITestContext context) {
  	// TODO Auto-generated method stub
  	}
  }

创建 testng.xml

接下来,让我们在 /work/testng/src 中创建 testng.xml 文件来执行测试用例。此文件以 XML 格式捕获您的整个测试过程。此文件使您可以轻松地在单个文件中描述所有测试套件及其参数,您可以将其检入代码存储库或通过电子邮件发送给同事。它还可以轻松提取测试子集或拆分多个运行时配置(例如,testngdatabase.xml 只运行测试您的数据库的测试)。

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
  <suite name="Suite">
    <listeners>
      <listener class-name="TestListener"/>
    </listeners>
    <test thread-count="5" name="Test">
      <classes>
        <class name="SimpleTestClass"/>
      </classes>
    </test> <!-- Test -->
  </suite> <!-- Suite -->

如您所见,我们需要在此 XML 文件中定义监听器。

使用 javac 编译测试用例。

/work/testng/src$ javac SimpleTestClass.java TestListener.java

现在,运行 testng.xml,这将运行在 <test> 标签中定义的测试用例。

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

验证输出。

  sum=42
  Success of test cases and its details are : sum
  Test case has failed
  Failure of test cases and its details are : testtofail

  ===============================================
  Suite
  Total tests run: 2, Passes: 1, Failures: 1, Skips: 0
  ===============================================

广告