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

3

我需要动态地将类名传递到Testng XML的<Class>中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test thread-count="5" name="Test">
      <parameter name="browser" value="chrome"></parameter>
    <classes>
      <class name="testCaseWithKeywordFramework.TestCase1_Login"/>
    </classes>
  </test> <!-- Test -->

</suite> <!-- Suite -->

在上面的XML代码中,我希望能够动态地传递类名,有人可以帮助我吗?

我不明白。为什么你想要动态地传递它?或者你的意思是你想要使用从代码生成的类进行编程? - cruisepandey
你的意思是想以编程方式使用类吗? - Satish Rongala
我想要在程序中动态地使用类名。 - Satish Rongala
你需要通过编程方式创建TestNG XML文件。你已经创建了吗? - cruisepandey
不好意思,实际上我对于编写 TestNG 的 XML 文件并没有什么概念。 - Satish Rongala
2个回答

1

谢谢您提供的信息。您了解我正在寻找什么。但我会等待其他信息,如果有人可以解释清楚,我也会接受您的答案。 - Satish Rongala
我有一个疑问,先生。使用以上代码后,我必须运行testNG XML文件还是可以直接运行我正在使用的类? - Satish Rongala

1
你可以非常容易地从自己的程序中调用TestNG:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { Run2.class });
testng.addListener(tla);
testng.run();

这个例子创建了一个TestNG对象并运行测试类Run2。

更多信息请参考这里

同样,您可以在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();

谢谢您,先生。这非常有用,我会参考它,如果我能理解的话,我一定会接受您的建议。 - Satish Rongala
@SatishRongala:没问题,伙计。试一下吧。 - cruisepandey
我有一个疑问,先生。在使用上述代码后,我必须运行testNG XML文件还是可以直接运行我正在使用的类? - Satish Rongala
运行您的代码将创建testng.xml。因此,无需手动运行testng.xml,直接运行类应该可以完成工作。 - cruisepandey
1
非常感谢您,先生。我现在就会尝试您的代码 :) - Satish Rongala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接