টেস্টএনজি (TestNG) বিভিন্ন ধরণের অ্যানোটেশন (Annotations) প্রদান করে যা টেস্ট মেথডগুলোর জীবনচক্র এবং কার্যপ্রক্রিয়া নির্ধারণে সাহায্য করে। TestNG এর অ্যানোটেশনগুলো JUnit এর থেকে উন্নত এবং নমনীয়।
বেসিক অ্যানোটেশন এবং তাদের ব্যবহার
@Test
@Test অ্যানোটেশনটি টেস্ট মেথড চিহ্নিত করতে ব্যবহৃত হয়। এটি TestNG এর সবচেয়ে মৌলিক অ্যানোটেশন।
উদাহরণ:
import org.testng.annotations.Test;
public class BasicTest {
@Test
public void testExample() {
System.out.println("This is a test method.");
}
}
আউটপুট:
This is a test method.
@BeforeMethod
@BeforeMethod অ্যানোটেশনটি এমন একটি মেথডকে নির্দেশ করে যা প্রতিটি টেস্ট মেথড চালানোর আগে একবার কার্যকর হয়।
উদাহরণ:
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class BeforeMethodExample {
@BeforeMethod
public void setup() {
System.out.println("Setup before each test.");
}
@Test
public void test1() {
System.out.println("Executing test1.");
}
@Test
public void test2() {
System.out.println("Executing test2.");
}
}
আউটপুট:
Setup before each test.
Executing test1.
Setup before each test.
Executing test2.
@AfterMethod
@AfterMethod অ্যানোটেশনটি এমন একটি মেথডকে নির্দেশ করে যা প্রতিটি টেস্ট মেথড চালানোর পরে একবার কার্যকর হয়।
উদাহরণ:
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class AfterMethodExample {
@AfterMethod
public void teardown() {
System.out.println("Teardown after each test.");
}
@Test
public void test1() {
System.out.println("Executing test1.");
}
@Test
public void test2() {
System.out.println("Executing test2.");
}
}
আউটপুট:
Executing test1.
Teardown after each test.
Executing test2.
Teardown after each test.
@BeforeClass
@BeforeClass অ্যানোটেশনটি এমন একটি মেথডকে নির্দেশ করে যা টেস্ট ক্লাসের মধ্যে টেস্ট মেথড চালানোর আগে একবার কার্যকর হয়।
উদাহরণ:
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class BeforeClassExample {
@BeforeClass
public void beforeClass() {
System.out.println("Execute this before any test in the class.");
}
@Test
public void test1() {
System.out.println("Test1 is running.");
}
@Test
public void test2() {
System.out.println("Test2 is running.");
}
}
আউটপুট:
Execute this before any test in the class.
Test1 is running.
Test2 is running.
@AfterClass
@AfterClass অ্যানোটেশনটি এমন একটি মেথডকে নির্দেশ করে যা টেস্ট ক্লাসের মধ্যে সমস্ত টেস্ট মেথড চালানোর পরে একবার কার্যকর হয়।
উদাহরণ:
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
public class AfterClassExample {
@AfterClass
public void afterClass() {
System.out.println("Execute this after all tests in the class.");
}
@Test
public void test1() {
System.out.println("Test1 is running.");
}
@Test
public void test2() {
System.out.println("Test2 is running.");
}
}
আউটপুট:
Test1 is running.
Test2 is running.
Execute this after all tests in the class.
@DataProvider
@DataProvider ব্যবহার করে ডেটা-ড্রিভেন টেস্ট তৈরি করা যায়। এটি একই টেস্ট মেথড একাধিক ইনপুট দিয়ে চালানোর সুযোগ দেয়।
উদাহরণ:
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderExample {
@DataProvider(name = "testData")
public Object[][] dataProvider() {
return new Object[][] {
{"Alice", 25},
{"Bob", 30}
};
}
@Test(dataProvider = "testData")
public void testData(String name, int age) {
System.out.println("Name: " + name + ", Age: " + age);
}
}
আউটপুট:
Name: Alice, Age: 25
Name: Bob, Age: 30
বেসিক অ্যানোটেশনের কার্যক্রমের ধারা
১. @BeforeClass: ক্লাস লেভেলে প্রথম কার্যকর হয়।
২. @BeforeMethod: প্রতিটি টেস্ট মেথড চালানোর আগে কার্যকর হয়।
৩. @Test: টেস্ট মেথড কার্যকর হয়।
৪. @AfterMethod: প্রতিটি টেস্ট মেথড চালানোর পরে কার্যকর হয়।
৫. @AfterClass: ক্লাস লেভেলে সবশেষে কার্যকর হয়।
TestNG এর মাধ্যমে বেসিক টেস্টিং সহজ এবং কার্যকর হয়, বিশেষ করে এই অ্যানোটেশনগুলো ব্যবহারে। এগুলো টেস্ট স্যুটকে মডিউলার এবং রিইউজেবল করতে সাহায্য করে।
Read more