Testng 继承多个套件的配置

Testng 继承多个套件的配置,testng,Testng,我有一个多套件的测试包。我希望所有套件定义都从全局配置xml继承并行配置(特别是套件标记中的parallel和threadcount属性) 这可能吗?TestNG似乎不支持这一点。它允许支持包含套件文件(请参阅),但这不适用于继承套件属性 但是,您可以通过编程方式解析testng.xml文件,并应用所需的任何转换。e、 g: TestNG TestNG=new TestNG(); List xmlSuites=new Parser(“testng.xml”).parsetList(); 对于(X

我有一个多套件的测试包。我希望所有套件定义都从全局配置xml继承并行配置(特别是套件标记中的
parallel
threadcount
属性)


这可能吗?

TestNG似乎不支持这一点。它允许支持包含
套件文件
(请参阅),但这不适用于继承套件属性

但是,您可以通过编程方式解析testng.xml文件,并应用所需的任何转换。e、 g:

TestNG TestNG=new TestNG();
List xmlSuites=new Parser(“testng.xml”).parsetList();
对于(XmlSuite XmlSuite:xmlSuites){
setParallel(xmlSuite.ParallelMode.METHODS);
setThreadCount(32);
}
testNG.setXmlSuites(xmlSuites);
testNG.run();
这又不是真正的继承。我们无法真正“覆盖”“基”值,因为我们无法检查是否指定了属性,然后在未指定时设置它,因为TestNG在未指定时加载默认值

要获得实际继承,可以直接检查testng.xml文件:

TestNG TestNG=new TestNG();
DocumentBuilderFactory DocumentBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder DocumentBuilder=documentBuilderFactory.newDocumentBuilder();
documentBuilder.setEntityResolver((publicId,systemId)->{
if(Parser.TESTNG\u DTD\u URL.equals(systemId)){
//返回一个空的DTD,而不是实际的DTD,以便忽略默认值
返回新的InputSource(新的StringReader(“”);
}否则{
返回null;
}
});
List xmlSuites=new Parser(“testng.xml”).parseToList/*with dtd*/();
对于(XmlSuite XmlSuite:xmlSuites){
NamedNodeMap attributes=documentBuilder.parse/*不带DTD*/(xmlSuite.getFileName()
.getDocumentElement().getAttributes();
if(attributes.getNamedItem(“parallel”)==null){
setParallel(xmlSuite.ParallelMode.METHODS);
}
if(attributes.getNamedItem(“线程计数”)==null){
setThreadCount(32);
}
}
testNG.setXmlSuites(xmlSuites);
testNG.run();