博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TestNG的IMethodInterceptor监听器详解
阅读量:4179 次
发布时间:2019-05-26

本文共 1311 字,大约阅读时间需要 4 分钟。

在TestNG的执行过程中,根据测试方法的执行顺序,可以将测试方法分为如下两类:

  • 顺序执行的方法,即依赖于其他测试方法或者被其他测试方法所依赖
  • 执行无特定顺序的方法,即测试方法的执行没有特定的顺序要求,不同的TestNG执行可能有不同的顺序

对于第一类测试方法,其执行顺序不能随意改变,必须符合依赖关系。但是对于第二类测试方法,TestNG提供了IMethodInterceptor监听器,可以改变这些测试方法的执行顺序。

IMethodInterceptor监听器也是继承自ITestNGListener接口,其中唯一定义如下方法:

java.util.List
intercept(java.util.List
methods, ITestContext context);
注意:只有第二类测试方法能够作为intercept()方法的第一个参数。

           intercept()方法的返回值是经过排序后的测试方法,TestNG将据此顺序执行测试方法。

           intercept()方法的第二个参数可以设置用户信息,便于后续生成测试报表时进行查看。

事实上,TestNG在调用任何测试方法之前,都会调用IMethodInterceptor监听器实例的intercept()方法。

1. IMethodInterceptor监听器的实现示例如下:

public class FastMethodInterceptor implements IMethodInterceptor {public List
intercept(List
methods, ITestContext context) { List
result = new ArrayList
(); for (IMethodInstance m : methods) { Test test = m.getMethod().getConstructorOrMethod().getAnnotation(Test.class); Set
groups = new HashSet
(); for (String group : test.groups()) { groups.add(group); } if (groups.contains("fast")) { result.add(0, m); } else { result.add(m); } } return result;}}
注意:重写的方法中,属于“fast"组的测试方法被加入到链表的头部,优先执行。

2. 启动TestNG时指定IMethodInterceptor监听器

java org.testng.TestNG -listener test.methodinterceptors.FastMethodInterceptor testng.xml

转载地址:http://wplai.baihongyu.com/

你可能感兴趣的文章
617. Merge Two Binary Trees(Tree)
查看>>
700. Search in a Binary Search Tree(Tree)
查看>>
515. Find Largest Value in Each Tree Row(Tree)
查看>>
897. Increasing Order Search Tree(Tree)
查看>>
114. Flatten Binary Tree to Linked List(Tree)
查看>>
199. Binary Tree Right Side View(Tree)
查看>>
230. Kth Smallest Element in a BST(Tree)
查看>>
TreeMap源码解析
查看>>
求字符串的最长回文串-----Manacher's Algorithm 马拉车算法
查看>>
MYSQL的索引
查看>>
回溯法常用的解题模板和常见题型
查看>>
深入分析Java I/O 的工作机制
查看>>
动态规划的套路----左神
查看>>
KMP算法简解
查看>>
左神算法课进阶版总结
查看>>
左神算法基础班总结
查看>>
Linux性能优化
查看>>
进程间的通信---UNIX高级环境编程
查看>>
Linux三剑客--grep、sed、awk
查看>>
操作系统----CPU、内存、进程管理
查看>>