Dynamic TestNG XML Creation. Getting wrong XML. Where I am wrong.
I want my testNG xml to be print as shown below.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="App Automation Testing">
<parameter name="BrowserName" value="chrome"/>
<test name="MyTest1">
<classes>
<class name="etaf.tests.LaunchApp"/>
<class name="etaf.tests.LoginTests"/>
</classes>
</test> <!-- MyTest1 -->
<test name="MyTest2">
<classes>
<class name="etaf.tests.LaunchApp"/>
</classes>
</test> <!-- MyTest2 -->
</suite> <!-- App Automation Testing -->
But with the below Java Code; this code is having a array similar to what shown below
|testclass|testname|
|class1 |TC_LOGIN|
|class2 |TC_LOGIN|
|class1 |TC_WORK |
public void sample(String[][] dbArr, Map<String,String> parameters ) {
//Create an instance on TestNG
TestNG myTestNG = new TestNG();
//Create an instance of XML Suite and assign a name for it.
XmlSuite suite = new XmlSuite();
suite.setName("App Automation Testing");
suite.setParameters(parameters);
String dummyName = "";
List<XmlClass> classes1 = null;
List<XmlTest> tests = new ArrayList<XmlTest>();
XmlTest test1 = null;
for(int i=0;i<dbArr.length;i++) {
if(!dummyName.equalsIgnoreCase(dbArr[i][1])) {
test1 = new XmlTest(suite);
test1.setName(dbArr[i][1]);
classes1 = new ArrayList<XmlClass> ();
classes1.add(new XmlClass(dbArr[i][0]));
dummyName = dbArr[i][1];
} else if(dummyName.equalsIgnoreCase(dbArr[i][1])) {
classes1.add(new XmlClass(dbArr[i][0]));
dummyName = dbArr[i][1];
}
test1.setXmlClasses(classes1);
tests.add(test1);
}
//add the list of tests to your Suite.
suite.setTests(tests);
//Add the suite to the list of suites.
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
System.out.println(suite.toXml());
//Set the list of Suites to the testNG object you created earlier.
myTestNG.setXmlSuites(suites);
//invoke run() - this will run your class.
myTestNG.run();
}
it is printing like this. Where I am wrong.? Please help.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="App Automation Testing">
<parameter name="BrowserName" value="chrome"/>
<test name="TC_LOGIN">
<classes>
<class name="etaf.tests.LaunchApp"/>
<class name="etaf.tests.LoginTests"/>
</classes>
</test> <!-- TC_LOGIN -->
<test name="TC_LOGIN">
<classes>
<class name="etaf.tests.LaunchApp"/>
<class name="etaf.tests.LoginTests"/>
</classes>
</test> <!-- TC_LOGIN -->
<test name="TC_WORK">
<classes>
<class name="etaf.tests.LaunchApp"/>
</classes>
</test> <!-- TC_WORK -->
</suite> <!-- App Automation Testing -->