TestNG源码解析1——内置的监听器介绍

TestNG源码解析1——监听器介绍


本文介绍

本文主要分析TestNG的监听器类型

监听器

  • IExecutionVisualiser

    public interface IExecutionVisualiser extends ITestNGListener {
        void consumeDotDefinition(String dotDefinition);
    }
    

    是以图节点String输出 DOT

  • ISuiteListener

    public interface ISuiteListener extends ITestNGListener {
    	default void onStart(ISuite suite);
        default void onFinish(ISuite suite);
    }
    

    用例开始和结束时调用

  • ITestListener

    public interface ITestListener extends ITestNGListener {
        default void onTestStart(ITestResult result);
        default void onTestSuccess(ITestResult result);
        default void onTestFailure(ITestResult result);
        default void onTestSkipped(ITestResult result);
        default void onTestFailedButWithinSuccessPercentage(ITestResult result);
        default void onTestFailedWithTimeout(ITestResult result) {
        onTestFailure(result)
        }
        default void onStart(ITestContext context);
        default void onFinish(ITestContext context)
    }
    

    对测试用例ITestResult的监听状态

  • IClassListener

    public interface IClassListener extends ITestNGListener {
      default void onBeforeClass(ITestClass testClass)default void onAfterClass(ITestClass testClass);
    }
    

    对测试用例类的监听

  • IReporter

    public interface IReporter extends ITestNGListener {
        default void generateReport(
          List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory);
        
        default IReporterConfig getConfig() {
        return new PojoReporterConfig(this);
      }
    }
    

    可以拿到测试完后的结果数据 - 例如生成邮件报告

  • IAnnotationTransformer

    public interface IAnnotationTransformer extends ITestNGListener {
    	default void transform(
          ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod);
        default void transform(
          IConfigurationAnnotation annotation,
          Class testClass,
          Constructor testConstructor,
          Method testMethod);
        default void transform(IDataProviderAnnotation annotation, Method method);
        default void transform(IFactoryAnnotation annotation, Method method);
        default void transform(IListenersAnnotation annotation, Class<?> testClass);
    }
    

    可以给用例上添加 注解

  • IMethodInterceptor

    public interface IMethodInterceptor extends ITestNGListener {
    
      List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context);
    }
    

    在执行开始前,可以更改测试用例的执行顺序

  • IInvokedMethodListener

    public interface IInvokedMethodListener extends ITestNGListener {
        default void beforeInvocation(IInvokedMethod method, ITestResult testResult);
        default void afterInvocation(IInvokedMethod method, ITestResult testResult) ;
        default void beforeInvocation(
          IInvokedMethod method, ITestResult testResult, ITestContext context);
        default void afterInvocation(
          IInvokedMethod method, ITestResult testResult, ITestContext context);
    }
    
  • IHookable

    public interface IHookable extends ITestNGListener {
    
      void run(IHookCallBack callBack, ITestResult testResult);
    }
    

    类上修饰,测试用例会直接进入该run方法,如果不主动调用 callBack.runTestMethod(testResult);则不会执行用例;

  • IConfigurable

    public interface IConfigurable extends ITestNGListener {
      void run(IConfigureCallBack callBack, ITestResult testResult);
    }
    

    长得类似IHookable, 在执行TestNg的配置方法时会调用run(), 但我不知道咋用这个

  • IExecutionListener

    public interface IExecutionListener extends ITestNGListener {
      default void onExecutionStart();
      default void onExecutionFinish();
    }
    

    监听TestNG开始与结束

  • IConfigurationListener

    public interface IConfigurationListener extends ITestNGListener {
      default void onConfigurationSuccess(ITestResult tr);
      default void onConfigurationSuccess(ITestResult tr, ITestNGMethod tm);
      default void onConfigurationFailure(ITestResult tr);
      default void onConfigurationFailure(ITestResult tr, ITestNGMethod tm);
      default void onConfigurationSkip(ITestResult tr);
      default void onConfigurationSkip(ITestResult tr, ITestNGMethod tm);
      default void beforeConfiguration(ITestResult tr);
      default void beforeConfiguration(ITestResult tr, ITestNGMethod tm);
    }
    

    和配置方法有关

  • IAlterSuiteListener

    public interface IAlterSuiteListener extends ITestNGListener {
      default void alter(List<XmlSuite> suites);
    }
    

    在测试开始前执行

  • IDataProviderListener

    public interface IDataProviderListener extends ITestNGListener {
      default void beforeDataProviderExecution(
          IDataProviderMethod dataProviderMethod, ITestNGMethod method, ITestContext iTestContext);
      default void afterDataProviderExecution(
          IDataProviderMethod dataProviderMethod, ITestNGMethod method, ITestContext iTestContext);
      default void onDataProviderFailure(ITestNGMethod method, ITestContext ctx, RuntimeException t);
    }
    

    可以在数据驱动前后以及异常处增加切面

  • IDataProviderInterceptor

    public interface IDataProviderInterceptor extends ITestNGListener {
      Iterator<Object[]> intercept(
          Iterator<Object[]> original,
          IDataProviderMethod dataProviderMethod,
          ITestNGMethod method,
          ITestContext iTestContext);
    }
    

    用于运行测试方法的更改数据集

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BugGuys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值