据我了解,方法拦截器可用于按优先级构建正在运行的方法列表。但在我的项目中,方法拦截器针对每个测试类的测试方法运行。
例如,有两个类被放入方法 setTestClasses 中。第一类有 3 种测试方法(具有相似的优先级)。第二个有一个(具有最高优先级)。在这种情况下,优先级最高的方法将最晚运行,因为方法拦截器将首先为第一类的 3 个方法运行,然后为第二类的方法运行。正确吗?
最佳答案
它是什么方法拦截器,它通过List给出方法列表。在方法拦截器的拦截方法内,您可以重新排序列表并返回 List 对象。因此,在执行过程中,Testng 将使用您修改后的列表。在拦截方法的原始列表输入中。那就是testng中方法拦截器的使用。而且它不涉及这个级别的优先级。 当然,您可以使用方法拦截器通过实现方法拦截器来将测试列表重新排序为优先级。
请参阅下面的示例代码以进行说明。
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 执行
谢谢你, 达沙纳。
关于java - 在运行测试方法之前必须调用一次 IMethodInterceptor 还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12420885/