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[][] {
        {"alice@example.com", "pass123", true},
        {"invalid@test.com", "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);
}