In TestNG, you can group test classes in a <test> element and all the <test> elements can be grouped in a suite file.
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="sanity test suite">
<test name="Sanity test 1">
<classes>
<class name="com.sample.app.arithmetic.TestClass1"></class>
<class name="com.sample.app.arithmetic.TestClass2"></class>
</classes>
</test>
<test name="Sanity test 2">
<classes>
<class name="com.sample.app.arithmetic.TestClass3"></class>
<class name="com.sample.app.arithmetic.TestClass4"></class>
</classes>
</test>
</suite>
Define ‘suiteDemo.xml’ file in the same package where your test classes exist.
As you see the xml, this test suite has two test elements. First test element groups the test classes TestClass1 and TestClass2. Second test element groups the test classes TestClass3 and TestClass4.
package com.sample.app.arithmetic;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
public class BaseTest {
@BeforeSuite
public void beforeSuite_1() {
System.out.println("Inside beforeSuite_1");
}
@BeforeSuite
public void beforeSuite_2() {
System.out.println("Inside beforeSuite_2\n");
}
@AfterSuite
public void afterSuite_1() {
System.out.println("\nInside afterSuite_1");
}
@AfterSuite
public void afterSuite_2() {
System.out.println("Inside afterSuite_2");
}
}
TestClass1.java
package com.sample.app.arithmetic;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestClass1 extends BaseTest {
@BeforeClass
public void beforeClass_1() {
System.out.println("********************************");
System.out.println("TestClass1: Inside before class 1");
}
@BeforeClass
public void beforeClass_2() {
System.out.println("TestClass1: Inside before class 2");
}
@BeforeMethod
public void beforeMethod_1() {
System.out.println("\nTestClass1: Inside beforeMethod_1");
}
@BeforeMethod
public void beforeMethod_2() {
System.out.println("TestClass1: Inside beforeMethod_2");
}
@Test
public void testCase1() {
System.out.println("TestClass1: testCase1 executing");
}
@Test
public void testCase2() {
System.out.println("TestClass1: testCase2 executing");
}
@AfterMethod
public void afterMethod_1() {
System.out.println("TestClass1: Inside afterMethod_1");
}
@AfterMethod
public void afterMethod_2() {
System.out.println("TestClass1: Inside afterMethod_2");
}
@AfterClass
public void afterClass_1() {
System.out.println("\nTestClass1: Inside after class 1");
}
@AfterClass
public void afterClass_2() {
System.out.println("TestClass1: Inside after class 2");
}
}
TestClass2.java
package com.sample.app.arithmetic;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestClass2 extends BaseTest {
@BeforeClass
public void beforeClass_1() {
System.out.println("\n********************************");
System.out.println("TestClass2: Inside before class 1");
}
@BeforeClass
public void beforeClass_2() {
System.out.println("TestClass2: Inside before class 2");
}
@BeforeMethod
public void beforeMethod_1() {
System.out.println("\nTestClass2: Inside beforeMethod_1");
}
@BeforeMethod
public void beforeMethod_2() {
System.out.println("TestClass2: Inside beforeMethod_2");
}
@Test
public void testCase1() {
System.out.println("TestClass2: testCase1 executing");
}
@Test
public void testCase2() {
System.out.println("TestClass2: testCase2 executing");
}
@AfterMethod
public void afterMethod_1() {
System.out.println("TestClass2: Inside afterMethod_1");
}
@AfterMethod
public void afterMethod_2() {
System.out.println("TestClass2: Inside afterMethod_2");
}
@AfterClass
public void afterClass_1() {
System.out.println("\nTestClass2: Inside after class 1");
}
@AfterClass
public void afterClass_2() {
System.out.println("TestClass2: Inside after class 2");
}
}
TestClass3.java
package com.sample.app.arithmetic;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestClass3 extends BaseTest {
@BeforeClass
public void beforeClass_1() {
System.out.println("\n********************************");
System.out.println("TestClass3: Inside before class 1");
}
@BeforeClass
public void beforeClass_2() {
System.out.println("TestClass3: Inside before class 2");
}
@BeforeMethod
public void beforeMethod_1() {
System.out.println("\nTestClass3: Inside beforeMethod_1");
}
@BeforeMethod
public void beforeMethod_2() {
System.out.println("TestClass3: Inside beforeMethod_2");
}
@Test
public void testCase1() {
System.out.println("TestClass3: testCase1 executing");
}
@Test
public void testCase2() {
System.out.println("TestClass3: testCase2 executing");
}
@AfterMethod
public void afterMethod_1() {
System.out.println("TestClass3: Inside afterMethod_1");
}
@AfterMethod
public void afterMethod_2() {
System.out.println("TestClass3: Inside afterMethod_2");
}
@AfterClass
public void afterClass_1() {
System.out.println("\nTestClass3: Inside after class 1");
}
@AfterClass
public void afterClass_2() {
System.out.println("TestClass3: Inside after class 2");
}
}
TestClass4.java
package com.sample.app.arithmetic;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestClass4 extends BaseTest {
@BeforeClass
public void beforeClass_1() {
System.out.println("\n********************************");
System.out.println("TestClass4: Inside before class 1");
}
@BeforeClass
public void beforeClass_2() {
System.out.println("TestClass4: Inside before class 2");
}
@BeforeMethod
public void beforeMethod_1() {
System.out.println("\nTestClass4: Inside beforeMethod_1");
}
@BeforeMethod
public void beforeMethod_2() {
System.out.println("TestClass4: Inside beforeMethod_2");
}
@Test
public void testCase1() {
System.out.println("TestClass4: testCase1 executing");
}
@Test
public void testCase2() {
System.out.println("TestClass4: testCase2 executing");
}
@AfterMethod
public void afterMethod_1() {
System.out.println("TestClass4: Inside afterMethod_1");
}
@AfterMethod
public void afterMethod_2() {
System.out.println("TestClass4: Inside afterMethod_2");
}
@AfterClass
public void afterClass_1() {
System.out.println("\nTestClass4: Inside after class 1");
}
@AfterClass
public void afterClass_2() {
System.out.println("TestClass4: Inside after class 2");
}
}
How to run the test suite file?
Right click on the xml file.
You will get below messages in console.
Inside beforeSuite_1 Inside beforeSuite_2 ******************************** TestClass1: Inside before class 1 TestClass1: Inside before class 2 TestClass1: Inside beforeMethod_1 TestClass1: Inside beforeMethod_2 TestClass1: testCase1 executing TestClass1: Inside afterMethod_1 TestClass1: Inside afterMethod_2 TestClass1: Inside beforeMethod_1 TestClass1: Inside beforeMethod_2 TestClass1: testCase2 executing TestClass1: Inside afterMethod_1 TestClass1: Inside afterMethod_2 TestClass1: Inside after class 1 TestClass1: Inside after class 2 ******************************** TestClass2: Inside before class 1 TestClass2: Inside before class 2 TestClass2: Inside beforeMethod_1 TestClass2: Inside beforeMethod_2 TestClass2: testCase1 executing TestClass2: Inside afterMethod_1 TestClass2: Inside afterMethod_2 TestClass2: Inside beforeMethod_1 TestClass2: Inside beforeMethod_2 TestClass2: testCase2 executing TestClass2: Inside afterMethod_1 TestClass2: Inside afterMethod_2 TestClass2: Inside after class 1 TestClass2: Inside after class 2 ******************************** TestClass3: Inside before class 1 TestClass3: Inside before class 2 TestClass3: Inside beforeMethod_1 TestClass3: Inside beforeMethod_2 TestClass3: testCase1 executing TestClass3: Inside afterMethod_1 TestClass3: Inside afterMethod_2 TestClass3: Inside beforeMethod_1 TestClass3: Inside beforeMethod_2 TestClass3: testCase2 executing TestClass3: Inside afterMethod_1 TestClass3: Inside afterMethod_2 TestClass3: Inside after class 1 TestClass3: Inside after class 2 ******************************** TestClass4: Inside before class 1 TestClass4: Inside before class 2 TestClass4: Inside beforeMethod_1 TestClass4: Inside beforeMethod_2 TestClass4: testCase1 executing TestClass4: Inside afterMethod_1 TestClass4: Inside afterMethod_2 TestClass4: Inside beforeMethod_1 TestClass4: Inside beforeMethod_2 TestClass4: testCase2 executing TestClass4: Inside afterMethod_1 TestClass4: Inside afterMethod_2 TestClass4: Inside after class 1 TestClass4: Inside after class 2 Inside afterSuite_1 Inside afterSuite_2
No comments:
Post a Comment