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() + "]");
}
}
添加回答
舉報