Difference between BeforeClass and BeforeTest in TestNG

0
0
As we know from official TestNG documentation:

@BeforeClass: The annotated method will be run before the first test method in the current class is invoked.

@BeforeTest: The annotated method will be run before any test method belonging to the classes inside the <test> tag is run.

Both the above testng annotations look similar in functionality.
However, there should be a unique difference in the feature.
Can anyone please emphasise this?

  • You must to post comments
0
0

SeleniumAbstractTest.class

public abstract class SeleniumAbstractTest {
@BeforeSuite
public void beforeSuite() {
System.out.println("BeforeSuite");
}
@BeforeTest
public void beforeTest() {
System.out.println("BeforeTest");
}
@BeforeClass
public void beforeClass() {
System.out.println("BeforeClass");
}
@BeforeMethod
public void beforeMethod() {
System.out.println("BeforeMethod");
}
@AfterMethod
public void afterMethod() {
System.out.println("AfterMethod");
}
@AfterClass
public void afterClass() {
System.out.println("AfterClass");
}
@AfterTest
public void afterTest() {
System.out.println("AfterTest");
}
@AfterSuite
public void afterSuite() {
System.out.println("AfterSuite");
}
}

MyTestClass1.class

public class MyTestClass1 extends SeleniumAbstractTest {
@Test
public void myTestMethod1() {
System.out.println("myTestMethod1");
}
@Test
public void myTestMethod2() {
System.out.println("myTestMethod2");
}
}

MyTestClass2.class

public class MyTestClass2 extends SeleniumAbstractTest {
@Test
public void myTestMethod3() {
System.out.println("myTestMethod3");
}
@Test
public void myTestMethod4() {
System.out.println("myTestMethod4");
}
}

If you have the following Test Suite…

<suite name="Suite">
<test name="Test1" >
<classes>
<class name="MyTestClass2" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="MyTestClass1"/>
<class name="MyTestClass2"/>
</classes>
</test>
</suite>

… then the output will be

BeforeSuite
BeforeTest
BeforeClass
BeforeMethod
myTestMethod3
AfterMethod
BeforeMethod
myTestMethod4
AfterMethod
AfterClass
AfterTest
BeforeTest
BeforeClass
BeforeMethod
myTestMethod1
AfterMethod
BeforeMethod
myTestMethod2
AfterMethod
AfterClass
BeforeClass
BeforeMethod
myTestMethod3
AfterMethod
BeforeMethod
myTestMethod4
AfterMethod
AfterClass
AfterTest
AfterSuite

Hope it helps 🙂

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website