Annotations are nothing but a piece of instruction for the compiler that you apply to classes, methods or variables in your Java code. It is a powerful feature and an integral part of the TestNG framework.

There are multiple TestNG annotations which you can use for different tasks. It is essential to know each of the annotation so that you could apply them correctly while working on a TestNG Selenium WebDriver project. 

Let’s see what the TestNG annotations for Selenium WebDriver are and what is their objective? The TestNG annotations extend the same concept and control the execution sequence of the test code and test methods.

I’ve drilled down the list of primary TestNG annotations along with a little detail about each of them.

TestNG Annotations Description
@Test Attaches a class or a method to become the part of the test.
@BeforeTest Instructs the method to run before any test method related to the classes which are inside the <test> tag as per the <testng.xml> file
@AfterTest Halts a method from execution till all the test methods finish their execution. These methods belong to the classes defined in the <test> tag of <testng.xml> file.
@BeforeMethod Allows a method to run before executing any of the @test annotated methods.
@AfterMethod Allows a method to take off after all of the @test annotated methods finish their execution.
@Parameters You can use this annotation for passing the parameters to the test methods.
@DataProvider It marks a method as a data source for the test. Every @DataProvider annotated method must always return the value as <Object[ ][ ]>. You can use it in any of the @Test annotated methods.
@BeforeClass The method annotated with @BeforeClass gets executed once before the first test method of the current class.
@AfterClass The method annotated with @AfterClass gets run once after finishing all the test methods in the current class.
@BeforeGroups It sets up the method to run before the first test method belonging to any of the groups involved in the execution.
@AfterGroups It sets up the method to run after the execution of all the test methods belonging to any of the groups participating in the test.
@BeforeSuite Any such method will get called before any of the suites runs from the test.
@AfterSuite Any such method will stay its execution until all other methods in the current test suite get executed.
@Factory You use it to execute any specific group of test cases with varied values. It returns an array of test class objects as the <Object[ ]>.
@Listeners You can use them with the test classes for the logging function.


There are many benefits of using the annotations in the project.

  • They are easier to understand.
  • You can group the test cases using the appropriate annotation.
  • You can do parallel testing.
  • You can pass extra parameters to annotations.
  • They are strongly typed, so the compiler will catch any error outright.

Leave a Reply

Your email address will not be published. Required fields are marked *