0

据我了解,方法拦截器可用于按优先级构建正在运行的方法列表。但是在我的项目中,方法拦截器为每个测试类的测试方法运行。

例如,有两个类被放入方法 setTestClasses。第一类有 3 种测试方法(具有相似的优先级)。在第二个中有一个(具有最高优先级)。在这种情况下,优先级最高的方法将最晚运行,因为方法拦截器将首先针对第一类的 3 个方法运行,然后针对第二类的方法运行。这是对的吗?

4

1 回答 1

2

它是什么方法拦截器,它通过 List 给出方法列表。在方法拦截器的拦截方法中,您可以重新排序列表并返回 List 对象。因此,在执行中,Testng 将使用您修改后的列表。代替原来的列表输入拦截方法。那就是testng中方法拦截器的使用。它不处理这个级别的优先级。当然,您可以使用 methodinterceptor 通过实现方法拦截器将测试列表重新排序为优先级。

请参阅下面的示例代码进行说明。

public class methodSortingListner implements IMethodInterceptor {
public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
    List<IMethodInstance> result = new ArrayList<IMethodInstance>();
    for (IMethodInstance method : methods) {
          if(<your logic here>)
          {
             result.add(method);
          }
    }

 return result;

}

这将给出一个适合您的逻辑的列表,并将由 testng 执行

谢谢你,达沙那。

于 2012-09-14T09:09:41.913 回答