- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to use TestNG @After Annotation?
A TestNG class can have various @After TestNG methods. Such as: @AfterTest @AfterSuite @AfterClass @AfterMethod etc.
This article will explain the order of execution of different TestNG methods.
TestNG consists of following @After methods to support main @Test method. The order of execution of @After methods should be as following:
<test1> <AfterMethod> <AfterClass> <AfterTest> <AfterSuite>
Key Points in this Order are
First of all, 1st @test() method is executed in above example.
The AfterSuite() method executes only once.
Even the methods AfterClass(), and AfterTest() methods are executed only once.
AfterMethod() method executes for each test case (every time for a new @Test) but after executing the test case.
Approach/Algorithm to Solve this Problem
Step 1: import org.testng.annotations.* for TestNG.
Step 2: Write an annotation as @test
Step 3: Create a method for the @test annotation as test1.
Step 4: Repeat the steps for test2 and test3.
Step 5: Write different annotations and their respective methods. Ex:, @AfterClass, @AfterMethod, @AfterSuite
Step 5: Now create the testNG.xml as given below.
Step 6: Now, run the testNG.xml or directly testNG class in IDE or compile and run it using command line.
Example
The following code to show the order of different TestNG methods:
import org.testng.annotations.*; import org.testng.annotations.Test; public class OrderofTestExecutionInTestNG { // test case 1 @Test public void testCase1() { System.out.println("in test case 1"); } // test case 2 @Test public void testCase2() { System.out.println("in test case 2"); } @AfterMethod public void afterMethod() { System.out.println("in afterMethod"); } @AfterClass public void afterClass() { System.out.println("in afterClass"); } @AfterTest public void afterTest() { System.out.println("in afterTest"); } @AfterSuite public void afterSuite() { System.out.println("in afterSuite"); } }
testng.xml
This is a configuration file that is used to organize and run the TestNG test cases.
It is very handy when limited tests are needed to execute rather than full suite.
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Suite1"> <test name = "test1"> <classes> <class name = "OrderofTestExecutionInTestNG"/> </classes> </test> </suite>
Output
in test case 1 in afterMethod in test case 2 in afterMethod in afterClass in afterTest in afterSuite