您可以创建实现IMethodInterceptor接口的侦听器。这将使您能够从@Test访问组列表,并根据需要管理“测试要执行的列表”。同时,ITestContext参数允许您从testNg
xml访问数据。因此,您可以将组设置为以默认的testNg方式运行(合适的xml文件);但根据您实现的算法运行它们。就像是:
import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.testng.IMethodInstance;import org.testng.IMethodInterceptor;import org.testng.ITestContext;import org.testng.annotations.Test;public class Interceptor implements IMethodInterceptor{ @Override public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) { int methCount = methods.size(); List<IMethodInstance> result = new ArrayList<IMethodInstance>(); for (int i = 0; i < methCount; i++) { IMethodInstance instns = methods.get(i); List<String> grps = Arrays.asList(instns.getMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class).groups());//get these groups from testng.xml via context method parameter if (grps.contains("A") && grps.contains("B")) { result.add(instns); } } return result; }}


