繁体   English   中英

如何在不使用的情况下以编程方式将 IMethodInterceptor 侦听器添加到 testng 套件<listener> xml 文件中的标记</listener>

[英]How to add IMethodInterceptor Listener to the testng suite programmatically without using <listener> tag in xml file

我已经在我的框架中实现IMethodInterceptor侦听器,以便在运行时从Jenkins应用测试组。 我必须在所有测试 xml 中使用<listener>标记来包含此侦听器。 这对我来说将是一项艰巨的任务。 我想通过 JAVA 本身来分配它。

我试过这个:

iTestContext.getSuite().addListener(new MethodInterceptorListener());
iTestContext.getSuite().addListener(new InvokedMethodListener());

这适用于InvokedMethodListener但不适用于MethodInterceptorListener

  1. 知道如何使它工作吗?
  2. 为什么这个适用于InvokedMethodListeneraddListener()方法不适用于MethodInterceptorListener
iTestContext.getSuite().addListener(new MethodInterceptorListener());

这不起作用,因为IMethodInterceptor类型的侦听器(以及少数其他类型)未在ISuite.addListener()中处理。 而您可以向TestRunner添加一个侦听器,它是ITestContext的实现。

你可以试试下面的代码,它会工作的。

if(iTestContext instanceof TestRunner) {
    ((TestRunner) iTestContext).addListener(new MethodInterceptorListener()); 
}

如果您使用的是 java 16,请执行以下操作:

if(iTestContext instanceof TestRunner t) {
    t.addListener(new MethodInterceptorListener()); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM