TestNG has become the most popular testing framework for Java automation, surpassing JUnit in many aspects. Whether you’re interviewing for SDET, Automation Engineer, or QA roles, strong TestNG knowledge is essential.
This guide covers the top 18 TestNG interview questions ranging from basic annotations to advanced parallel execution strategies.
Top 18 TestNG Interview Questions & Answers
1. What is TestNG?
TestNG (Test Next Generation) is a Java testing framework inspired by JUnit but designed to cover all testing categories (unit, functional, end-to-end).
2. Why use TestNG over JUnit?
✔ Annotations are more powerful
✔ Parallel test execution support
✔ Data-driven testing with @DataProvider
✔ HTML reports out of the box
✔ Test grouping with @Test(groups)
3. Explain TestNG annotations hierarchy
java
@BeforeSuite → @BeforeTest → @BeforeClass → @BeforeMethod → @Test → @AfterMethod → @AfterClass → @AfterTest → @AfterSuite
4. What is @Test
annotation in TestNG?
Marks a method as test case:
java
@Test(priority=1, groups="smoke") public void loginTest() {...}
5. How to set test priority in TestNG?
Use priority
parameter:
java
@Test(priority=1) // Runs first public void createUser(){} @Test(priority=2) // Runs second public void loginUser(){}
6. What is @DataProvider
in TestNG?
Supplies multiple sets of data to a test method:
java
@DataProvider(name="logins") public Object[][] getData() { return new Object[][] {{"user1","pass1"}, {"user2","pass2"}}; } @Test(dataProvider="logins") public void loginTest(String user, String pass) {...}
7. How to run tests in parallel in TestNG?
Configure in testng.xml
:
xml
<suite name="Parallel Suite" parallel="methods" thread-count="3"> <test name="Regression"> <classes>...</classes> </test> </suite>
8. What are TestNG assertions?
Verify expected vs actual results:
java
Assert.assertEquals(actual, expected); Assert.assertTrue(condition); Assert.assertNotNull(object);
9. How to handle dependencies between tests?
Use dependsOnMethods
:
java
@Test public void login() {...} @Test(dependsOnMethods="login") // Runs only if login passes public void dashboardTest() {...}
10. What is @Factory
annotation?
Creates multiple test instances dynamically:
java
@Factory public Object[] createTests() { return new Object[] { new TestClass(1), new TestClass(2) }; }
11. How to skip a test in TestNG?
Use enabled=false
:
java
@Test(enabled=false) public void deprecatedTest() {...}
12. What is ITestListener
interface?
Allows custom test execution hooks:
java
public class MyListener implements ITestListener { public void onTestStart(ITestResult result) {...} public void onTestSuccess(ITestResult result) {...} }
13. How to rerun failed tests?
Use IRetryAnalyzer:
java
public class RetryAnalyzer implements IRetryAnalyzer { private int count = 0; private int maxRetry = 3; public boolean retry(ITestResult result) { if(count < maxRetry) { count++; return true; } return false; } } @Test(retryAnalyzer=RetryAnalyzer.class) public void flakyTest() {...}
14. What is @Parameters
annotation?
Passes values from testng.xml
to tests:
xml
<parameter name="browser" value="chrome"/>
java
@Test @Parameters("browser") public void launchTest(String browser) {...}
15. How to group tests in TestNG?
java
@Test(groups={"smoke","regression"}) public void criticalTest() {...}
Run specific groups via testng.xml
:
xml
<groups> <run> <include name="smoke"/> </run> </groups>
16. What is @BeforeGroups
and @AfterGroups
?
Runs before/after specific test groups:
java
@BeforeGroups("database") public void setupDB() {...} @AfterGroups("ui") public void cleanupUI() {...}
17. How to generate TestNG reports?
TestNG auto-generates:
test-output/index.html
emailable-report.html
For enhanced reports, use ExtentReports or Allure.
18. How to test expected exceptions?
java
@Test(expectedExceptions=ArithmeticException.class) public void divideByZero() { int i = 1/0; // Throws ArithmeticException }
Benefits of Using TestNG
✅ Parallel Execution – Faster test runs
✅ Flexible Annotations – Better control than JUnit
✅ Data-Driven Testing – Single test for multiple inputs
✅ Integration – Works with Selenium, RestAssured
✅ Detailed Reporting – HTML, XML outputs
Testimonials from DigitalForest Clients
*”DigitalForest’s text-to-speech integration helped us automate voice testing with TestNG. Their solution reduced our QA cycle by 40%.”*
– Rajesh K., QA Lead
“As a automation engineer, I rely on DigitalForest’s speech APIs for accessibility testing. Their documentation made TestNG integration seamless.”
– Priya M., SDET
“We process thousands of voice commands daily. DigitalForest’s stable TTS service combined with TestNG ensures 99.9% reliability.”
– Michael T., CTO
FAQ Section
1. Is TestNG only for Selenium?
No! TestNG works for API testing (RestAssured), unit tests, and database testing too.
2. TestNG vs JUnit 5 – which is better?
- TestNG for complex automation (parallel, data-driven)
- JUnit 5 for simple unit testing
3. How to run TestNG from command line?
bash
java -cp "testng.jar:your_tests.jar" org.testng.TestNG testng.xml