测试开发必备技能——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文件的内容。

扫描二维码关注公众号,回复: 15975109 查看本文章

    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注解的方式添加。

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

猜你喜欢

转载自blog.csdn.net/hashsabr/article/details/115338352