Java 动态创建TestNG.xml文件并传递参数
我必须使用动态testng.xml文件执行测试脚本,这意味着我必须通过代码创建testng.xml文件,并按语法将参数传递给@test methods pro 为此,我创建了两个Java文件DynamicTestNG.Java,该文件应生成testng.xml文件并运行SampleClass.Java,其中@Test方法已与参数一起编写 DynamicTestNG.javaJava 动态创建TestNG.xml文件并传递参数,java,selenium,automation,webdriver,testng,Java,Selenium,Automation,Webdriver,Testng,我必须使用动态testng.xml文件执行测试脚本,这意味着我必须通过代码创建testng.xml文件,并按语法将参数传递给@test methods pro 为此,我创建了两个Java文件DynamicTestNG.Java,该文件应生成testng.xml文件并运行SampleClass.Java,其中@Test方法已与参数一起编写 DynamicTestNG.java public class DynamicTestNG { public void runTestNGTest(Map&l
public class DynamicTestNG {
public void runTestNGTest(Map<String,String> testngParams) {
//Create an instance on TestNG
TestNG myTestNG = new TestNG();
//Create an instance of XML Suite and assign a name for it.
XmlSuite mySuite = new XmlSuite();
mySuite.setName("MySuite");
//Create an instance of XmlTest and assign a name for it.
XmlTest myTest = new XmlTest(mySuite);
myTest.setName("MyTest");
//Add any parameters that you want to set to the Test.
myTest.setParameters(testngParams);
//Create a list which can contain the classes that you want to run.
List<XmlClass> myClasses = new ArrayList<XmlClass> ();
myClasses.add(new XmlClass("SampleClass"));
//Assign that to the XmlTest Object created earlier.
myTest.setXmlClasses(myClasses);
//Create a list of XmlTests and add the Xmltest you created earlier to it.
List<XmlTest> myTests = new ArrayList<XmlTest>();
myTests.add(myTest);
//add the list of tests to your Suite.
mySuite.setTests(myTests);
//Add the suite to the list of suites.
List<XmlSuite> mySuites = new ArrayList<XmlSuite>();
mySuites.add(mySuite);
//Set the list of Suites to the testNG object you created earlier.
myTestNG.setXmlSuites(mySuites);
TestListenerAdapter tla = new TestListenerAdapter();
myTestNG.addListener(tla);
//invoke run() - this will run your class.
myTestNG.run();
}
public static void main (String args[])
{
DynamicTestNG dt = new DynamicTestNG();
//This Map can hold your testng Parameters.
Map<String,String> testngParams = new HashMap<String,String> ();
testngParams.put("searchtext1", "testdata1");
testngParams.put("searchtext2", "testdata2");
dt.runTestNGTest(testngParams);
}
它没有运行。请告诉我这里的错误。您必须取消对SampleClass文件中@Test注释的注释。如果您的SampleClass在包中,则在该语句中指定绝对包名+类名
myClasses.add(new XmlClass("com.some.package.SampleClass"));
通常,TestNG类有一个后缀或前缀标记为“Test”,这样surefire插件就可以将它们包含在执行流中,如果您使用的是maven,则可以使用带有类对象参数的构造函数 添加(新的XmlClass(SampleClass.class))
尝试使用完整的类名意味着在此处使用包名。。添加(新的XmlClass(“SampleClass”);你能详细说明一下“它没有运行”吗?错误是什么?
myClasses.add(new XmlClass("com.some.package.SampleClass"));