1 回答
TA贡献1866条经验 获得超5个赞
你不能用 TestNG 开箱即用。基本上没有一种机制可以多次迭代属于一个组的一堆测试n
。
做到这一点的唯一方法是手动复制标签<test>
,正如您指出的那样,这是一个手动过程,每次都需要更改和签入套件 xml。
总而言之,TestNG 仍然允许您通过执行以下操作来做到这一点。
确保你依赖于 TestNG
7.0.0-beta7
(截至今天最新)构建一个实现,
org.testng.IAlterSuiteListener
您可以使用它以编程方式更改您的套件文件并添加/删除/更新其中的任何内容。
这是一个执行您所要求的侦听器的示例。
import java.util.List;
import org.testng.IAlterSuiteListener;
import org.testng.ITestContext;
import org.testng.TestListenerAdapter;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlGroups;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
public class MultiRunner extends TestListenerAdapter implements IAlterSuiteListener {
@Override
public void alter(List<XmlSuite> suites) {
XmlSuite xmlsuite = suites.get(0);
XmlTest xmltest = xmlsuite.getTests().get(0);
XmlGroups xmlgroups = xmltest.getXmlGroups();
List<XmlClass> xmlclasses = xmltest.getClasses();
int iteration = Integer.parseInt(System.getProperty("iterations", "2"));
String name = xmltest.getName();
for (int i=1; i<= iteration; i++) {
XmlTest test = new XmlTest(xmlsuite);
test.setName(name + "_" + i);
test.setGroups(xmlgroups);
test.setXmlClasses(xmlclasses);
}
}
@Override
public void onStart(ITestContext testContext) {
System.err.println("Commencing execution of [" + testContext.getName() + "]");
}
}
添加回答
举报