TestNG Annotations Order Example
TestNG Annotations Order Example
In this tutorial, we will learn TestNG annotations order. In the earlier post, we had a look at some of the various TestNG annotations.
@BeforeSuite
This Before Suite Method is executed before any of the tests in the TestNG suite XML file.
@AfterSuite
This After Suite Method is executed after all the tests in the TestNG suite XML file are executed.
@BeforeTest
This Before Test method is executed before the first @Test annotated method in each test tag in TestNG suite XML file.
@AfterTest
This After Test method is executed after the last test method in the test tag in the suite XML file.
@BeforeClass
This Before Class method which is executed before the test methods inside a test class.
@AfterClass
This After Class Method is executed after all of the test methods inside a test class.
@BeforeGroups
This Before Groups Method is executed before execution of the tests belonging to the group specified in the ‘groups’ attribute.
@AfterGroups
This After Groups Method is executed after execution of all the tests belonging to the group specified in the ‘groups’ attribute.
@BeforeMethod
This Before Method is executed before each @Test annotated method.
@AfterMethod
This After Method is executed after each @Test annotated method.
TestNG Annotations Order – Example
To know the TestNG Annotations order of execution, we will write a test class with the annotations and run the test class using the testng.xml file.
package com.testingdocs.testng.tutorials;
//www.TestingDocs.com - TestNG Tutorials
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNGAnnotationExecutionOrder {
// Before Suite method
@BeforeSuite
public void beforeSuiteTest(){
System.out.println("@BeforeSuite execution");
}
// After Suite method
@AfterSuite
public void afterSuiteTest(){
System.out.println("@AfterSuite execution");
}
// Before Test method
@BeforeTest
public void beforeTest(){
System.out.println("@BeforeTest execution"); }
// After test method
@AfterTest
public void afterTest(){
System.out.println("@AfterTest execution");
}
//Before class method
@BeforeClass
public void beforeClassTest(){
System.out.println("@BeforeClass execution");
}
// After class method
@AfterClass
public void afterClassTest(){
System.out.println("@AfterClass execution");
}
//Before Groups
//This method is executed before execution of the test method belonging
// to group "P1".
@BeforeGroups(groups={"P1"})
public void beforeGroupOneTest(){
System.out.println("@BeforeGroups P1 execution");
}
//After Groups
//This method is executed after execution of the * test methods belonging to
// group "P1".
@AfterGroups(groups={"P1"})
public void afterGroupOneTest(){
System.out.println("@AfterGroups P1 excution");
}
//This method is executed before execution of the
//test methods belonging to group "P2"
@BeforeGroups(groups={"P2"})
public void beforeGroupTwoTest(){
System.out.println("@BeforeGroups P2 execution");
}
//This method is executed after execution of the
//test methods belonging to group "P2"
@AfterGroups(groups={"P2"})
public void afterGroupTwoTest(){
System.out.println("@AfterGroups P2 execution");
}
//BeforeMethod
@BeforeMethod
public void beforeMethodTest(){
System.out.println("@BeforeMethod execution");
}
// AfterMethod
@AfterMethod
public void afterMethodTest(){
System.out.println("@AfterMethod execution");
}
//This Test method doesn't belong to any group.
@Test()
public void sampleTestOne(){
System.out.println("Sample Test One method execution");
}
//This Test method doesn't belong to any group.
@Test()
public void sampleTestTwo(){
System.out.println("Sample Test Two method execution");
}
//This Test method which belongs to group "P1".
@Test(groups={"P1"})
public void groupP1MethodTest(){
System.out.println("Group P1 Test method execution");
}
//This Test method belongs to group "P2".
@Test(groups={"P2"})
public void groupP2MethodTest(){
System.out.println("Group P2 Test method execution");
}
}
testng.xml File
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <!-- www.TestingDocs.com TestNG Tutorials --> <suite name="TestingDocs Suite"> <test name="TestOne"> <classes> <class name="com.testingdocs.testng.tutorials .TestNGAnnotationExecutionOrder"> </class> </classes> </test> </suite>
Run the TestNG Suite file. Right click on the testng.xml file and choose Run As >> TestNG Suite option in the context menu. The TestNG annotations order of execution is shown in the output.
Sample Output
@BeforeSuite execution
@BeforeTest execution
@BeforeClass execution
@BeforeMethod execution
Group P1 Test method execution
@AfterMethod execution
@BeforeMethod execution
Group P2 Test method execution
@AfterMethod execution
@BeforeMethod execution
Sample Test One method execution
@AfterMethod execution
@BeforeMethod execution
Sample Test Two method execution
@AfterMethod execution
@AfterClass execution
@AfterTest execution
@AfterSuite execution
===============================================
TestingDocs Suite
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
===============================================
