Can TestNG run multiple suites? Can TestNG run multiple suites? selenium selenium

Can TestNG run multiple suites?


You can runt testNG suites like this:

<suite name="allSuites">  <suite-files>    <suite-file path="suite1.xml" />    <suite-file path="suite2.xml" />    ...  </suite-files></suite>

You can also run those suites in parallel with an ant task. If you want I ll provide example code for ant.


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.