TestNG & JUnit Integration
TestNG and JUnit 5 are the two main test runners for Selenium + Java.
TestNG BaseTest
java
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.*;
public class BaseTest {
protected WebDriver driver;
@BeforeMethod
public void setUp() {
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--no-sandbox", "--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
}
@AfterMethod
public void tearDown() {
if (driver != null) driver.quit();
}
}JUnit 5 BaseTest
java
import org.junit.jupiter.api.*;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BaseTest {
protected WebDriver driver;
@BeforeEach
void setUp() {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@AfterEach
void tearDown() {
if (driver != null) driver.quit();
}
}TestNG Data Provider
java
@DataProvider(name = "loginData")
public Object[][] loginData() {
return new Object[][] {
{"[email protected]", "pass123", true},
{"[email protected]", "wrong", false},
};
}
@Test(dataProvider = "loginData")
public void testLogin(String email, String pass, boolean expectSuccess) {
LoginPage page = new LoginPage(driver);
page.login(email, pass);
Assert.assertEquals(page.isLoggedIn(), expectSuccess);
}