Search
  • +44-7459919437 (UK- WhatsApp & Direct Call) | +91-6383544892 (India - WhatsApp Only) | Email Id : vinothrwins@gmail.com
Vinoth Tech Solutions
  • Home
  • Selenium Java Online Training
  • Self Paced Video Course
    • Selenium Course Curriculum
    • Cypress Course Curriculum
    • Playwright Course Curriculum
  • Tutorials
  • Demo Sites
    • E-Commerce Demo Application
    • Practice Automation
      • Demo Page Healthcare
      • Registration Form
      • Transaction Details
      • DropDown
      • Mouse Event
      • Keyboard Events
      • Alert and Popup
      • Multiple Windows
      • iFrames
      • Wait WebElement
      • WebTable
  • FAQS
  • About Me & Feedback
    • Placed Students Feedback
    • Online Training Feedback
    • LinkedIn Profile
    • TechTalk
  • Free YouTube Courses
    • Python for Automation
    • Free QA Video Courses
      • Manual Testing
      • Java For Automation
      • Selenium Webdriver
      • TestNG
      • Cucumber BDD
      • UFT(QTP) Automation
    • Free Data Science Courses
      • Artificial Intelligence for Beginners
      • Python For A.I
      • Python Pandas
      • Python NumPy
      • Mathematics for A.I
  • Home
  • Selenium Java Online Training
  • Self Paced Video Course
    • Selenium Course Curriculum
    • Cypress Course Curriculum
    • Playwright Course Curriculum
  • Tutorials
  • Demo Sites
    • E-Commerce Demo Application
    • Practice Automation
      • Demo Page Healthcare
      • Registration Form
      • Transaction Details
      • DropDown
      • Mouse Event
      • Keyboard Events
      • Alert and Popup
      • Multiple Windows
      • iFrames
      • Wait WebElement
      • WebTable
  • FAQS
  • About Me & Feedback
    • Placed Students Feedback
    • Online Training Feedback
    • LinkedIn Profile
    • TechTalk
  • Free YouTube Courses
    • Python for Automation
    • Free QA Video Courses
      • Manual Testing
      • Java For Automation
      • Selenium Webdriver
      • TestNG
      • Cucumber BDD
      • UFT(QTP) Automation
    • Free Data Science Courses
      • Artificial Intelligence for Beginners
      • Python For A.I
      • Python Pandas
      • Python NumPy
      • Mathematics for A.I

TestNG Framework

  • What is TestNG Framework?
  • Advantages and Disadvantages of TestNG:
  • Difference between TestNG And Junit framework
  • What is TestNG Annotations?
  • Install TestNG In Eclipse & IntelliJ?
  •  Hierarchy In TestNG Annotations
  • TestNG’s prioritization
  • TestNG Dependent
  • Reporter Class in TestNG
  • TestNG Reports
  • Assertions in TestNG
  • TestNG Groups
  • TestNG Parameters
  •  Cross-Browser Testing in TestNG
  •  Parallel Testing in TestNG
  • Data Providers
  • TestNG Listeners
  • Rerunning failed tests in TestNG
View Categories
  • Home
  • Tutorials
  • TestNG
  • TestNG Framework
  • What is TestNG Annotations?

What is TestNG Annotations?

What is TestNG Annotations?

In TestNG (a Java testing framework), an annotation is a form of metadata—marked by the @ symbol—that you place on classes or methods to tell TestNG how and when to execute them. Instead of hard-coding the test logic or relying on naming conventions, you use annotations to:

  • Define test methods (e.g. @Test)

  • Specify setup and teardown routines at various scopes (suite, test, class, method)

  • Drive data-driven tests (@DataProvider, @Parameters)

  • Control execution order and dependencies (dependsOnMethods, alwaysRun, etc.)

  • Group tests and apply group-specific configuration (@BeforeGroups, @AfterGroups)

Under the hood, TestNG reads these annotations via Java’s reflection API at runtime. When it sees, for example, @BeforeMethod on a method, it will automatically invoke that method before each @Test in the same class. This declarative approach makes your test code clean, flexible, and easy to configure without boilerplate.

Use of Annotations:

1. Test Definition

@Test
Marks a method as a test case.
Explanation: TestNG will run any method annotated with @Test. You can further control invocation (e.g., priority, groups, dependsOnMethods, enabled) via its attributes.

2. Configuration (Global)

@BeforeSuite
Runs once before all tests in the entire suite.
Explanation: Ideal for suite-wide setup tasks (e.g., loading global configuration).

@AfterSuite
Runs once after all tests in the entire suite.
Explanation: Ideal for suite-wide teardown (e.g., generating consolidated reports).

3. Configuration (Test Tag in XML)

@BeforeTest
Runs before any <test> tag in the TestNG XML.
Explanation: Use when you have multiple <test> sections and need setup per section.

@AfterTest
Runs after all methods in a <test> tag have run.
Explanation: Corresponds to cleanup per <test> section.

4. Configuration (Class Level)

@BeforeClass
Runs once before the first method in the current class is invoked.
Explanation: Class-level initialization (e.g., instantiate class-scoped resources).

@AfterClass
Runs once after all methods in the current class have run.
Explanation: Class-level cleanup (e.g., close resources opened in @BeforeClass).

5. Configuration (Method Level)

@BeforeMethod
Runs before each test method.
Explanation: Prepares prerequisites needed for every individual test method.

@AfterMethod
Runs after each test method.
Explanation: Cleans up after each test, ensuring isolation between tests.

6. Group Configuration

@BeforeGroups
Runs before the first test method that belongs to any of the specified groups.
Explanation: Use when you want setup to run once per group of tests.

@AfterGroups
Runs after all test methods in the specified groups have run.
Explanation: Performs group-specific teardown.

7. Parameterization & Data-Driven Testing

@DataProvider
Marks a method as supplying data for a test method.
Explanation: Returns an array of parameter sets; tests annotated with @Test(dataProvider=”…”) will run once per set.

@Parameters
Injects parameters from your TestNG XML into test methods or configuration methods.
Explanation: Useful for passing values (e.g., browser type, URLs) without hard-coding.

@Factory
Marks a method as a factory that returns objects containing test methods.
Explanation: Dynamically generates instances of test classes (and thus tests) at runtime.

8. Dependency & Sequencing

dependsOnMethods (attribute of @Test)
Specifies that this test method depends on one or more other methods.
Explanation: Ensures that if a prerequisite method fails/skips, dependent methods are skipped.

dependsOnGroups (attribute of @Test)
Declares dependency on a whole group of test methods.
Explanation: Skips tests until all methods in the named groups have passed.

9. Conditional Skipping

enabled (attribute of @Test)
Boolean flag to enable or disable a test method.
Explanation: Quickly include/exclude tests without removing the annotation.

alwaysRun (attribute of configuration annotations)
Forces a configuration method to run even if dependencies have failed or been skipped.
Explanation: Useful for cleanup that must occur regardless of earlier failures.

10. Miscellaneous

@Listeners
Associates listener classes (implementations of ITestListener, ISuiteListener, etc.) with your test class.
Explanation: Enables custom reporting, logging, or other behavior hooks.

@Optional
Used in conjunction with @Parameters to specify a default value when the parameter is not found in XML.
Explanation: Prevents runtime errors if an expected parameter is missing.

testng framework
What are your Feelings

Share This Article :

  • Facebook
  • X
  • LinkedIn
Difference between TestNG And Junit frameworkInstall TestNG In Eclipse & IntelliJ?
© 2018 – 2025 Vinoth Tech Solutions Ltd (UK), Reg. No: 16489105