Have a question?
Message sent Close
View Categories

 Parallel Testing in TestNG

📄
filename.js
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ParallelSuite"
       parallel="methods"
       thread-count="5">

  <!-- Each @Test method across all classes runs in its own thread -->
  <test name="MyTests">
    <classes>
      <class name="com.example.tests.LoginTest"/>
      <class name="com.example.tests.SearchTest"/>
      <class name="com.example.tests.CheckoutTest"/>
    </classes>
  </test>
</suite>

📄
filename.js
public class ParallelSeleniumTests {
  private static ThreadLocal<WebDriver> tlDriver = new ThreadLocal<>();

  @BeforeMethod
  @Parameters("browser")
  public void setUp(String browser) {
    WebDriver driver;
    if (browser.equals("firefox")) {
      driver = new FirefoxDriver();
    } else {
      driver = new ChromeDriver();
    }
    tlDriver.set(driver);
  }

  @Test
  public void testHomePage() {
    WebDriver driver = tlDriver.get();
    driver.get("https://example.com");
    Assert.assertTrue(driver.getTitle().contains("Example"));
  }

  @AfterMethod
  public void tearDown() {
    tlDriver.get().quit();
    tlDriver.remove();
  }
}

📄
filename.js
<suite name="SuiteParallelTests"
       parallel="methods"
       thread-count="3">
  <test name="ParallelMethods">
    <parameter name="browser" value="chrome"/>
    <classes>
      <class name="com.example.tests.ParallelSeleniumTests"/>
    </classes>
  </test>
</suite>

📄
filename.js
<suite name="ClassParallelSuite"
       parallel="classes"
       thread-count="3">
  <test name="ClassTests">
    <classes>
      <class name="com.example.tests.LoginTest"/>
      <class name="com.example.tests.OrderTest"/>
      <class name="com.example.tests.ProfileTest"/>
    </classes>
  </test>
</suite>

📄
filename.js
<suite name="SuitesInParallel" parallel="suites" thread-count="2">
  <suite-files>
    <suite-file path="suite1.xml"/>
    <suite-file path="suite2.xml"/>
  </suite-files>
</suite>

📄
filename.js
<test name="MethodParallelTest"
      parallel="methods"
      thread-count="5">
  …
</test>
📄
filename.js
@DataProvider(name="dp", parallel=true)
public Object[][] data() { … }

@Test(dataProvider="dp")
public void dpTest(String input) { … }