本文共 1311 字,大约阅读时间需要 4 分钟。
在TestNG的执行过程中,根据测试方法的执行顺序,可以将测试方法分为如下两类:
对于第一类测试方法,其执行顺序不能随意改变,必须符合依赖关系。但是对于第二类测试方法,TestNG提供了IMethodInterceptor监听器,可以改变这些测试方法的执行顺序。
IMethodInterceptor监听器也是继承自ITestNGListener接口,其中唯一定义如下方法:
java.util.List注意:只有第二类测试方法能够作为intercept()方法的第一个参数。intercept(java.util.List methods, ITestContext context);
intercept()方法的返回值是经过排序后的测试方法,TestNG将据此顺序执行测试方法。
intercept()方法的第二个参数可以设置用户信息,便于后续生成测试报表时进行查看。
事实上,TestNG在调用任何测试方法之前,都会调用IMethodInterceptor监听器实例的intercept()方法。
1. IMethodInterceptor监听器的实现示例如下:
public class FastMethodInterceptor implements IMethodInterceptor {public List注意:重写的方法中,属于“fast"组的测试方法被加入到链表的头部,优先执行。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;}}
2. 启动TestNG时指定IMethodInterceptor监听器
java org.testng.TestNG -listener test.methodinterceptors.FastMethodInterceptor testng.xml
转载地址:http://wplai.baihongyu.com/