Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态创建TestNG.xml文件并传递参数_Java_Selenium_Automation_Webdriver_Testng - Fatal编程技术网

Java 动态创建TestNG.xml文件并传递参数

Java 动态创建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

我必须使用动态testng.xml文件执行测试脚本,这意味着我必须通过代码创建testng.xml文件,并按语法将参数传递给@test methods pro

为此,我创建了两个Java文件DynamicTestNG.Java,该文件应生成testng.xml文件并运行SampleClass.Java,其中@Test方法已与参数一起编写

DynamicTestNG.java

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"));