Can TestNG run multiple suites?
To Run Multiple suites using TestNG XML the correct code goes below, Where I have prepared Three suites suiteA.xml
, suiteB.xml
, suiteC.xml
and have consolidated them in testng.xml
. You can copy paste the below code and change the packagename.classname
in the class tag and run it would work...
suiteA.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="SuiteA" > <!-- suite name="Suite Name" --> <test name="TestA1" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteA.TestCaseA1" /> </classes> </test> <test name="TestA2" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteA.TestCaseA1" /> </classes> </test> </suite>
suiteB.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="SuiteB" > <!-- suite name="Suite Name" --> <test name="TestB1" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteB.TestCaseB1" /> </classes> </test> <test name="TestB2" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteB.TestCaseB2" /> </classes> </test></suite>
suiteC.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="SuiteC" > <!-- suite name="Suite Name" --> <test name="TestC1" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteC.TestCaseC1" /> </classes> </test> <test name="TestC2" allow-return-values="true"> <classes> <!-- packagename.Testcase class name --> <class name ="com.qtpselenium.suiteC.TestCaseC2" /> </classes> </test> </suite>
testng.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="TestNG Dadadriver suite" > <!-- suite name="Suite Name" --> <suite-files> <suite-file path="./suiteA.xml" /> <suite-file path="./suiteB.xml" /> <suite-file path="./suiteC.xml" /> </suite-files> </suite>
Put your parameter tag inside the test tag and create another test tag:
<suite name="suite"> <test name="Firefox tests"> <parameter name="browser" value="*firefox" /> <classes> <class name="test.webui.MemcachedDeploymentTest" /> </classes> </test> <test name="Chrome tests"> <parameter name="browser" value="*chrome" /> <classes> <class name="test.webui.MemcachedDeploymentTest" /> </classes> </test></suite>
Another option that would be less verbose would be to use @Factory
.