Site icon TestingDocs.com

TestNG Annotations Order Example

Overview

In this tutorial, we will learn TestNG annotations order. In the earlier post, we had a look at some of the various TestNG annotations.

https://www.testingdocs.com/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
===============================================

 

TestNG Tutorials on this website can be found at:

https://www.testingdocs.com/testng-framework-tutorial/

For more details on the TestNG Framework, visit the official website of TestNG at:

https://testng.org

Exit mobile version