通常testNG最常使用的方法就是@Test,@Test有一些常用的注释。比如我们需要控制不同的方法的执行顺序或者依赖关系,通常会使用priority,或者要控制一个类里某些@Test暂时不运行,会使用enabled。这些注释一般都写在代码里,如果我们需要动态修改@Test方法的优先级或者依赖关系等属性,需要用到监听器IMethodInterceptor。
1、创建监听器
2、创建表存储需要动态修改的属性
3、在@Test测试类里增加@Listeners({ExtentTestNGMethodInterceptor.class})
首先,先创建一个类ExtentTestNGMethodInterceptor 实现 IMethodInterceptor接口
public class ExtentTestNGMethodInterceptor implements IMethodInterceptor {
List<IMethodInstance> returnMethod = new ArrayList<IMethodInstance>();
@Override
public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
// IMethodInstance 这个接口所返回的是所有测试方法或实例(所有方法都在里面)
// 将IMethodInstance对象的list 创建为迭代器
Iterator<IMethodInstance> tie = methods.iterator();
// 遍历