测试开发必备技能——TestNG监听方法的使用

接口自动化测试的必备~ 更多测开知识和技能,还有面经相关,查看公众号【测试开发备忘录】

1. 监听方法的调用    

    当TestNG调用测试用例(以@Test注释)或配置(以@Before或@After注释中的任何一个注释)方法时,监听器IInvokedMethodListener都可以进行通知,可以通过以下接口实现监听方法的调用:

public interface IInvokedMethodListener extends ITestNGListener {  void beforeInvocation(IInvokedMethod method, ITestResult testResult);  void afterInvocation(IInvokedMethod method, ITestResult testResult);}

    根据TestNG监听器的部分所述,将其声明为监听器使用。

2. 重写测试方法

    TestNG允许您重写并在可能的情况下,跳过测试方法的调用。例如需要使用特定的安全管理器来测试方法时。可以通过提供实现IHookable的监听器来实现。下面是一个JAAS实现的例子:

public class MyHook implements IHookable {  public void run(final IHookCallBack icb, ITestResult testResult) {    // Preferably initialized in a @Configuration method    mySubject = authenticateWithJAAs();        Subject.doAs(mySubject, new PrivilegedExceptionAction() {      public Object run() {        icb.callback(testResult);      }    };  }}

3. 更新suite和测试用例

     背景

    有时,可能只需要在运行时更改suite的xml文件中的suite或test标签,而不必更改suite文件的内容。

    TestNG允许在运行时通过监听器更改suite的xml文件中的suite或test标签。可以通过提供实现IAlterSuiteListener的监听器来实现此目的。

    以下示例显示suite的名称在运行时如何更改:​​​​​​​

public class AlterSuiteNameListener implements IAlterSuiteListener {     @Override    public void alter(List<XmlSuite> suites) {        XmlSuite suite = suites.get(0);        suite.setName(getClass().getSimpleName());    }}

    只能通过以下两种方式之一添加监听器:

  • 通过suite的xml文件中的<listeners>标记。

  • 通过Service Loader

    注:不能使用@Listeners注解的方式添加。

     欢迎关注我的微信公众号 【测试备忘录】,查看更多测开技能知识。一起学习交流~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值