如何在Testng XML中将类名动态传递到类标记中

时间:2018-07-16 17:39:05

标签: java xml selenium testng

我需要将类名称动态传递给Testng XML中的// Expensive Operation; Want to Find Better Solution? getSelectedPlaylistPageObjArr() { const { selectedPlaylistIndex, pageDict, playlistDict, playlistList } = this.props; return playlistDict[ playlistList[ selectedPlaylistIndex ]].pageList.map( id => pageDict[id] ) : []; } render() { return ( <Playlist pageObjArr={this.getSelectedPlaylistPageObjArr()} /> ); } const mapStateToProps = ( state ) => { return { pageDict: state.entities.pageDict, playlistDict: state.entities.playlistDict, playlistList: state.entities.playlistList, selectedPlaylistIndex: state.application.selectedPlaylistIndex, }; };

<Class>

在上面的XML代码中,我想动态传递类名,任何人都可以在这方面帮助我。

2 个答案:

答案 0 :(得分:1)

可以通过在运行时创建套件文件本身来实现。检查此示例-http://localhost:3100/

答案 1 :(得分:1)

您可以很容易地从自己的程序中调用TestNG:

TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { Run2.class });
testng.addListener(tla);
testng.run();

此示例创建一个TestNG对象并运行测试类Run2。

有关更多信息,您可以参考here

类似地,您可以在testng.xml文件上调用TestNG,也可以自己创建虚拟的testng.xml文件

例如,假设您要创建以下虚拟文件:

<suite name="TmpSuite" >
  <test name="TmpTest" >
    <classes>
      <class name="test.failures.Child"  />
    <classes>
    </test>
</suite>

您将使用以下代码:

XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass("test.failures.Child"));
test.setXmlClasses(classes) ;  

然后您可以将此XmlSuite传递给TestNG:

List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();