java - 在运行测试方法之前必须调用一次 IMethodInterceptor 还是什么?

标签 java testng

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

例如,有两个类被放入方法 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/

相关文章:

java - 不同大小的多维数组

java - 在Java中生成文本文件时应该使用 "\r\n"还是 "\n"?

java - Spring data neo4j 的 Cineasts 示例的错误

java - 总是阻塞输入流进行测试?

Java applet 错误...出了什么问题?

java - 获取卡片 View 标签时出现空指针异常

java - 如何使用 mockito 和 testNg 测试枚举中的默认值

junit - 选择要在 gradle 中运行的特定测试

testing - 当 ATReporter 未对失败的测试进行截图时,如何更改浏览器页面

java - 使用(TestNG.xml + Maven)创建 Bat 文件需要正确的步骤