TestNG একটি শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক যা ডিফল্টভাবে বিস্তারিত রিপোর্ট জেনারেট করে। এই রিপোর্টগুলি HTML বা XML ফরম্যাটে তৈরি হয় এবং এটি টেস্টিং প্রক্রিয়ার ফলাফল বিশ্লেষণের জন্য গুরুত্বপূর্ণ।
TestNG রিপোর্ট কেমন তৈরি হয়?
TestNG টেস্ট রান করার পরে স্বয়ংক্রিয়ভাবে দুটি প্রাথমিক ধরণের রিপোর্ট তৈরি করে:
- HTML রিপোর্ট:
এটি একটি বিস্তারিত ভিজ্যুয়াল রিপোর্ট যেখানে টেস্ট মেথডের স্ট্যাটাস (পাস, ফেল, স্কিপড) দেখা যায়। - XML রিপোর্ট:
এটি একটি ডেটা-কেন্দ্রিক রিপোর্ট যা ভবিষ্যতের অটোমেশন প্রক্রিয়ায় ব্যবহৃত হতে পারে।
TestNG রিপোর্ট তৈরি করার ধাপ
১. ডিফল্ট রিপোর্ট
TestNG ডিফল্টভাবে HTML এবং XML রিপোর্ট তৈরি করে।
টেস্ট রিপোর্ট দেখতে:
- টেস্ট রান করার পর আপনার
test-outputফোল্ডারে যান। - এখানে প্রধান রিপোর্ট ফাইলগুলো পাবেন:
- index.html: HTML রিপোর্ট।
- testng-results.xml: XML রিপোর্ট।
index.html ফাইলটি ব্রাউজারে খুললে একটি ব্যবহার-বান্ধব টেবিলভিত্তিক রিপোর্ট দেখা যায়।
কাস্টমাইজড রিপোর্ট
TestNG ডিফল্ট রিপোর্টের পাশাপাশি কাস্টম রিপোর্ট তৈরি করারও সুযোগ দেয়। কাস্টম রিপোর্ট তৈরি করার জন্য ITestListener ইন্টারফেস ব্যবহার করা হয়।
ITestListener ব্যবহার করে কাস্টম রিপোর্ট তৈরি
ITestListener ইন্টারফেসের মাধ্যমে টেস্ট সাইকেলের বিভিন্ন পর্যায়ে হুক ব্যবহার করে কাস্টম লগ বা রিপোর্ট তৈরি করা যায়।
উদাহরণ:
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class CustomTestReport implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
System.out.println("Test Started: " + result.getName());
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("Test Passed: " + result.getName());
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println("Test Failed: " + result.getName());
}
@Override
public void onTestSkipped(ITestResult result) {
System.out.println("Test Skipped: " + result.getName());
}
@Override
public void onStart(ITestContext context) {
System.out.println("Test Suite Started: " + context.getName());
}
@Override
public void onFinish(ITestContext context) {
System.out.println("Test Suite Finished: " + context.getName());
}
}
কাস্টম রিপোর্ট সক্রিয় করা
TestNG XML ফাইলে কাস্টম লিসেনার যুক্ত করুন।
testng.xml:
<suite name="SuiteExample">
<listeners>
<listener class-name="CustomTestReport"/>
</listeners>
<test name="ExampleTest">
<classes>
<class name="ExampleTestClass"/>
</classes>
</test>
</suite>
HTML রিপোর্টকে আরও উন্নত করা (ExtentReports)
ExtentReports একটি জনপ্রিয় লাইব্রেরি যা TestNG-এর রিপোর্টিং সিস্টেমকে আরও ভিজ্যুয়াল এবং ব্যবহারকারী-বান্ধব করে তোলে। এটি TestNG-এর ডিফল্ট রিপোর্টের তুলনায় আরও স্টাইলিশ এবং ইন্টারেক্টিভ রিপোর্ট প্রদান করে।
ExtentReports যোগ করার ধাপ
- Maven ডিপেনডেন্সি যুক্ত করুন:
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>5.0.9</version>
</dependency>
- ExtentReports কোড লিখুন:
import com.aventstack.extentreports.*;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class ExtentReportExample {
ExtentReports extent;
ExtentTest test;
@BeforeTest
public void setUp() {
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("extentReport.html");
extent = new ExtentReports();
extent.attachReporter(htmlReporter);
}
@Test
public void testPass() {
test = extent.createTest("Test Pass Example");
test.pass("This test has passed!");
}
@Test
public void testFail() {
test = extent.createTest("Test Fail Example");
test.fail("This test has failed!");
}
@AfterTest
public void tearDown() {
extent.flush();
}
}
আউটপুট:
extentReport.html ফাইলটি একটি সুন্দর ভিজ্যুয়াল রিপোর্ট প্রদান করবে যা ব্রাউজারে খোলা যায়।
রিপোর্ট কাস্টমাইজেশনের সুবিধা
- ডিফল্ট রিপোর্ট ছাড়াও কাস্টমাইজেশন:
টেস্ট স্যুটের চাহিদা অনুযায়ী রিপোর্ট কাস্টমাইজ করা যায়। - ডেটা ফিল্টারিং:
টেস্টের সফলতা, ব্যর্থতা, বা স্কিপড মেথডের আলাদা স্ট্যাটাস প্রদান। - ভিজ্যুয়ালাইজেশন:
ExtentReports-এর মাধ্যমে সুন্দর এবং পেশাদার ভিজ্যুয়াল রিপোর্ট তৈরি।
সারাংশ
TestNG ডিফল্টভাবে HTML এবং XML রিপোর্ট তৈরি করে। বড় প্রজেক্ট বা পেশাদার টেস্টিং পরিবেশে ExtentReports বা কাস্টম ITestListener ব্যবহার করে রিপোর্টিং আরও উন্নত করা যায়। রিপোর্ট জেনারেশন এবং কাস্টমাইজেশনের মাধ্যমে টেস্টিং কার্যক্রম বিশ্লেষণ আরও সহজ এবং দক্ষ হয়।
TestNG টেস্ট এক্সিকিউশনের জন্য একটি স্বয়ংক্রিয় এবং শক্তিশালী ডিফল্ট রিপোর্টিং সিস্টেম সরবরাহ করে। টেস্ট এক্সিকিউশন শেষ হওয়ার পরে, এটি একটি বিস্তারিত HTML রিপোর্ট এবং XML রিপোর্ট তৈরি করে, যা টেস্টের ফলাফল বিশ্লেষণে সহায়ক।
TestNG-এর ডিফল্ট রিপোর্ট
TestNG ডিফল্টভাবে দুটি ধরণের রিপোর্ট তৈরি করে:
- HTML রিপোর্ট
- টেস্ট এক্সিকিউশনের ফলাফল দেখায়।
- টেস্ট পাস, ফেইল, এবং স্কিপড টেস্টের সংখ্যা এবং বিস্তারিত থাকে।
- সহজে ব্রাউজারে দেখা যায়।
- XML রিপোর্ট
- রিপোর্টের কাঠামো এবং ডেটা বিশ্লেষণের জন্য XML ফরম্যাটে রিপোর্ট প্রদান করে।
- অন্যান্য টুল বা সিস্টেমে ইন্টিগ্রেশনের জন্য কার্যকর।
TestNG রিপোর্ট কোথায় পাওয়া যায়?
যখন TestNG স্যুট চালানো হয়, তখন রিপোর্ট ফাইলগুলো test-output ডিরেক্টরিতে তৈরি হয়। এই ডিরেক্টরির মধ্যে দুটি প্রধান ফাইল থাকে:
- index.html
টেস্টের HTML রিপোর্ট ব্রাউজারে দেখতে। - testng-results.xml
XML ফরম্যাটে টেস্টের ফলাফল দেখতে।
HTML রিপোর্টের বৈশিষ্ট্য
- ওভারভিউ ট্যাব:
সব টেস্টের সার্বিক ফলাফল (পাস, ফেইল, স্কিপড)। - মেথডস ট্যাব:
প্রতিটি টেস্ট মেথডের ফলাফল এবং ডিউরেশন। - গ্রুপ ট্যাব:
যদি টেস্ট মেথডগুলো গ্রুপ করা হয়, তাহলে তার বিস্তারিত। - স্ক্রিনশট বা লগ ফাইল অ্যাড করা (কাস্টমাইজড):
কাস্টমাইজ করার মাধ্যমে টেস্টের স্ক্রিনশট বা লগ রিপোর্ট যুক্ত করা যায়।
TestNG HTML রিপোর্ট দেখতে
- টেস্ট রান করার পরে
test-output/index.htmlফাইলটি ব্রাউজারে ওপেন করুন। - এখানে টেস্ট ফলাফল পাস, ফেইল, এবং স্কিপড হিসাবে রঙ-ভিত্তিক চিহ্নিত থাকবে।
- প্রতিটি টেস্ট মেথডের এক্সিকিউশন সময়ও দেখানো হবে।
XML রিপোর্টের বৈশিষ্ট্য
XML রিপোর্টে নিচের তথ্যগুলো থাকে:
- ট্যাগ:
টেস্ট স্যুট সম্পর্কিত তথ্য। - ট্যাগ:
প্রতিটি টেস্ট ক্লাসের বিস্তারিত। - ট্যাগ:
প্রতিটি মেথডের এক্সিকিউশন স্ট্যাটাস (পাস, ফেইল, স্কিপড)।
ডিফল্ট রিপোর্টিং ব্যবহার করার উদাহরণ
টেস্ট ক্লাস:
import org.testng.annotations.Test;
public class TestNGReportExample {
@Test
public void testPass() {
System.out.println("This test will pass.");
}
@Test
public void testFail() {
System.out.println("This test will fail.");
assert false;
}
@Test
public void testSkip() {
System.out.println("This test will be skipped.");
throw new SkipException("Skipping this test.");
}
}
এক্সিকিউশন ফলাফল:
HTML রিপোর্টে টেস্ট মেথডগুলোকে তিনটি ভাগে ভাগ করা হবে:
- পাস:
testPass - ফেইল:
testFail - স্কিপড:
testSkip
কাস্টমাইজড রিপোর্টিং কেন প্রয়োজন হতে পারে?
TestNG ডিফল্ট রিপোর্টিং যথেষ্ট কার্যকর হলেও কিছু বিশেষ প্রয়োজনে কাস্টমাইজড রিপোর্ট প্রয়োজন হতে পারে, যেমন:
- স্ক্রিনশট যুক্ত করা।
- লগ ডেটা অ্যাড করা।
- বেশি ডিটেইল বা নির্দিষ্ট ফরম্যাট।
কাস্টম রিপোর্ট তৈরি করতে TestNG-এর IReporter এবং IResultListener ইন্টারফেস ব্যবহার করা যায়।
উপকারিতা
- ইউজার-ফ্রেন্ডলি: HTML রিপোর্ট সহজেই পড়া এবং বিশ্লেষণযোগ্য।
- ডিটেইলড ফলাফল: প্রতিটি টেস্টের মেথড, সময়, এবং স্ট্যাটাস দেখায়।
- ইন্টিগ্রেশন: XML ফাইলটি CI/CD টুলের (যেমন Jenkins) সাথে সহজে ইন্টিগ্রেট করা যায়।
সারাংশ
TestNG-এর ডিফল্ট রিপোর্টিং ফিচার টেস্ট এক্সিকিউশনের পাস, ফেইল, এবং স্কিপড স্ট্যাটাসসহ বিস্তারিত রিপোর্ট সরবরাহ করে। এটি টেস্ট ফলাফল বিশ্লেষণে সময় সাশ্রয় করে এবং সহজেই ব্রাউজারে পড়া যায়। XML ফাইল ব্যবহার করে রিপোর্টগুলো অন্যান্য সিস্টেম বা টুলে ইন্টিগ্রেট করাও সহজ।
TestNG টেস্ট রানের সময় স্বয়ংক্রিয়ভাবে HTML ও XML রিপোর্ট তৈরি করে। তবে, প্রয়োজন অনুসারে কাস্টম রিপোর্ট তৈরি করা সম্ভব। কাস্টম রিপোর্ট তৈরি করার মাধ্যমে আপনি টেস্টের নির্দিষ্ট তথ্য, লোগিং এবং ফলাফল বিশ্লেষণ আরও সহজ করতে পারেন।
TestNG Custom Report তৈরির জন্য ধাপসমূহ
১. IReporter ইন্টারফেস ব্যবহার করে কাস্টম রিপোর্ট তৈরি
TestNG-র IReporter ইন্টারফেসটি কাস্টম রিপোর্ট তৈরি করতে ব্যবহার করা হয়। এই ইন্টারফেসটি আপনাকে টেস্ট রান শেষ হওয়ার পরে সম্পূর্ণ তথ্য সংগ্রহের সুযোগ দেয়।
উদাহরণ: কাস্টম HTML রিপোর্ট তৈরি
ধাপ ১: IReporter ইন্টারফেস ইমপ্লিমেন্ট করা
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.xml.XmlSuite;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class CustomReport implements IReporter {
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
try {
// কাস্টম রিপোর্টের জন্য একটি HTML ফাইল তৈরি
FileWriter writer = new FileWriter(outputDirectory + "/custom-report.html");
writer.write("<html><head><title>Custom TestNG Report</title></head><body>");
writer.write("<h1>Test Execution Report</h1>");
// প্রতিটি Suite এর টেস্টের তথ্য সংগ্রহ
for (ISuite suite : suites) {
writer.write("<h2>Suite: " + suite.getName() + "</h2>");
suite.getResults().forEach((key, result) -> {
try {
writer.write("<h3>Test: " + result.getTestContext().getName() + "</h3>");
writer.write("<p>Passed Tests: " + result.getTestContext().getPassedTests().getAllResults().size() + "</p>");
writer.write("<p>Failed Tests: " + result.getTestContext().getFailedTests().getAllResults().size() + "</p>");
writer.write("<p>Skipped Tests: " + result.getTestContext().getSkippedTests().getAllResults().size() + "</p>");
} catch (IOException e) {
e.printStackTrace();
}
});
}
writer.write("</body></html>");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ধাপ ২: testng.xml ফাইলে Listener যুক্ত করা
TestNG কাস্টম রিপোর্টার চালানোর জন্য testng.xml ফাইল ব্যবহার করতে হয়।
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="CustomReportSuite">
<listeners>
<listener class-name="CustomReport"/>
</listeners>
<test name="SampleTest">
<classes>
<class name="SampleTest"/>
</classes>
</test>
</suite>
ধাপ ৩: একটি সাধারণ টেস্ট ক্লাস তৈরি করা
import org.testng.annotations.Test;
public class SampleTest {
@Test
public void testPass() {
System.out.println("This test will pass.");
}
@Test
public void testFail() {
System.out.println("This test will fail.");
assert false : "Failing the test!";
}
}
ধাপ ৪: রিপোর্ট জেনারেট করা
TestNG রান করার পর, আউটপুট ডিরেক্টরিতে (সাধারণত test-output) একটি custom-report.html ফাইল তৈরি হবে। এই ফাইলটি ব্রাউজারে ওপেন করলে কাস্টম HTML রিপোর্ট দেখতে পারবেন।
উদাহরণ: কনসোলে কাস্টম রিপোর্ট প্রদর্শন
ITestListener ইন্টারফেস ব্যবহার করে কনসোলে কাস্টম রিপোর্ট লোগিং করা যায়।
ITestListener ইন্টারফেস ব্যবহার
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class CustomConsoleReport implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
System.out.println("Starting Test: " + result.getName());
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("Test Passed: " + result.getName());
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println("Test Failed: " + result.getName());
}
@Override
public void onStart(ITestContext context) {
System.out.println("Starting Test Suite: " + context.getName());
}
@Override
public void onFinish(ITestContext context) {
System.out.println("Finished Test Suite: " + context.getName());
}
}
testng.xml ফাইল
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ConsoleReportSuite">
<listeners>
<listener class-name="CustomConsoleReport"/>
</listeners>
<test name="SampleTest">
<classes>
<class name="SampleTest"/>
</classes>
</test>
</suite>
Custom Report এর সুবিধা
১. রিপোর্ট কাস্টমাইজেশন: নিজের প্রয়োজন অনুযায়ী টেস্ট রিপোর্ট তৈরি করা যায়।
২. সহজ বিশ্লেষণ: নির্দিষ্ট ফলাফল যেমন পাস, ফেল বা স্কিপড টেস্ট সরাসরি ফাইল বা কনসোলে দেখা যায়।
৩. বহুমুখী ব্যবহার: HTML, XML বা JSON ফর্ম্যাটে রিপোর্ট তৈরি করা সম্ভব।
৪. রিয়েল-টাইম তথ্য: কনসোলে রিয়েল-টাইম রিপোর্ট জেনারেট করার সুবিধা।
সারসংক্ষেপ
TestNG-র IReporter এবং ITestListener ইন্টারফেস ব্যবহার করে কাস্টম রিপোর্ট তৈরি করা যায়। এটি টেস্টের ফলাফলকে আরও বিস্তারিত এবং সহজভাবে উপস্থাপন করতে সাহায্য করে। কাস্টম রিপোর্ট বড় মাপের টেস্টিং স্যুটের বিশ্লেষণে কার্যকর ভূমিকা রাখে।
TestNG একটি জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক যা Java এ পরীক্ষার কার্যক্রম পরিচালনা করতে সাহায্য করে। এই ফ্রেমওয়ার্কের মধ্যে বিভিন্ন ইন্টারফেস রয়েছে যা টেস্ট রিপোর্টিং এবং টেস্টের কার্যক্রম মনিটর করতে ব্যবহৃত হয়। এর মধ্যে দুটি গুরুত্বপূর্ণ ইন্টারফেস হলো IReporter এবং ITestListener। এগুলি ব্যবহার করে আপনি টেস্ট রান সময়ের বিভিন্ন স্টেট নিয়ে তথ্য সংগ্রহ করতে এবং কাস্টম রিপোর্ট তৈরি করতে পারবেন।
ITestListener Interface
ITestListener কী?
ITestListener একটি ইন্টারফেস যা TestNG এর টেস্ট রানের বিভিন্ন স্টেজে ইভেন্ট হ্যান্ডলিং করতে ব্যবহৃত হয়। এই ইন্টারফেসটি টেস্টের শুরু, সফল বা ব্যর্থ হওয়ার সময়, অথবা টেস্টের পরবর্তী ধাপে যাওয়ার সময় বিভিন্ন ইভেন্ট ট্র্যাক করতে সাহায্য করে।
ITestListener এর মেথডসমূহ
ITestListener ইন্টারফেসটি কিছু বিশেষ মেথড প্রদান করে যা টেস্ট রান ইভেন্টগুলো ট্র্যাক করতে ব্যবহৃত হয়। এই মেথডগুলি হলো:
- onTestStart(ITestResult result) : যখন কোন টেস্ট শুরু হয়, এই মেথডটি কল হয়।
- onTestSuccess(ITestResult result) : যদি টেস্ট সফলভাবে সম্পন্ন হয়, এই মেথডটি কল হয়।
- onTestFailure(ITestResult result) : যদি টেস্ট ব্যর্থ হয়, এই মেথডটি কল হয়।
- onTestSkipped(ITestResult result) : যদি টেস্ট স্কিপ হয়, এই মেথডটি কল হয়।
- onTestFailedButWithinSuccessPercentage(ITestResult result) : যদি টেস্ট কিছু সাফল্যের শতকরা হার দিয়ে ব্যর্থ হয়।
- onStart(ITestContext context) : টেস্ট স্যুটের শুরুতে এই মেথডটি কল হয়।
- onFinish(ITestContext context) : টেস্ট স্যুটের শেষে এই মেথডটি কল হয়।
ITestListener ব্যবহার
import org.testng.ITestListener;
import org.testng.ITestResult;
public class MyTestListener implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
System.out.println(result.getName() + " টেস্ট শুরু হয়েছে।");
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println(result.getName() + " টেস্ট সফলভাবে সম্পন্ন হয়েছে।");
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println(result.getName() + " টেস্ট ব্যর্থ হয়েছে।");
}
@Override
public void onTestSkipped(ITestResult result) {
System.out.println(result.getName() + " টেস্ট স্কিপ হয়েছে।");
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
// Optional Implementation
}
@Override
public void onStart(ITestContext context) {
System.out.println("টেস্ট স্যুট শুরু হয়েছে।");
}
@Override
public void onFinish(ITestContext context) {
System.out.println("টেস্ট স্যুট শেষ হয়েছে।");
}
}
IReporter Interface
IReporter কী?
IReporter একটি ইন্টারফেস যা কাস্টম রিপোর্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি TestNG এর টেস্ট রান শেষ হওয়ার পর রিপোর্ট জেনারেট করতে সাহায্য করে। IReporter ইন্টারফেসটি টেস্টের ফলাফল সম্পর্কে বিস্তারিত তথ্য সংগ্রহ করে এবং ব্যবহারকারীর চাহিদা অনুযায়ী রিপোর্ট তৈরি করতে সক্ষম।
IReporter এর মেথডসমূহ
IReporter ইন্টারফেসটি প্রধানত একটি মেথড প্রদান করে:
- generateReport(List xmlSuites, List suites, String outputDirectory) : এই মেথডটি রিপোর্ট তৈরি করতে ব্যবহৃত হয় এবং টেস্টের ফলাফলসমূহ যেমন XML, HTML বা অন্যান্য ফরম্যাটে আউটপুট দিতে পারে।
IReporter ব্যবহার
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.XmlSuite;
import java.util.List;
public class MyCustomReporter implements IReporter {
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
// রিপোর্ট জেনারেট করার লজিক এখানে থাকবে
System.out.println("কাস্টম রিপোর্ট জেনারেট হচ্ছে...");
}
}
IReporter এবং ITestListener এর পার্থক্য
- ITestListener মূলত টেস্টের কার্যক্রমের সময় বিভিন্ন ইভেন্ট ট্র্যাক করার জন্য ব্যবহৃত হয়, যেমন টেস্ট শুরু, সফল বা ব্যর্থ হওয়া, ইত্যাদি।
- IReporter কাস্টম রিপোর্ট তৈরি করার জন্য ব্যবহৃত হয় যা TestNG টেস্টের শেষে ফলাফল নির্ধারণ করে।
এই ইন্টারফেসগুলো ব্যবহার করে আপনি TestNG টেস্ট রানকে আরও বিস্তারিতভাবে ট্র্যাক করতে এবং কাস্টম রিপোর্ট তৈরি করতে সক্ষম হবেন।
TestNG একটি শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক যা পরীক্ষার ফলাফল স্বয়ংক্রিয়ভাবে রিপোর্ট তৈরি করে। এই রিপোর্টটি টেস্ট রান করার পর ব্যবহারকারীকে ফলাফল দেখায়। TestNG সাধারণত HTML, XML, এবং অন্যান্য ফরম্যাটে রিপোর্ট জেনারেট করে যা সহজে ব্যবহারযোগ্য এবং বিশ্লেষণযোগ্য। এই প্রতিবেদনে আমরা দেখব কিভাবে TestNG রিপোর্ট জেনারেশন করা যায় এবং এর একটি উদাহরণ।
TestNG রিপোর্ট জেনারেশন কিভাবে কাজ করে
TestNG রিপোর্ট তৈরি করতে আপনি সাধারণত XML ফাইলের মাধ্যমে কনফিগারেশন করবেন। এই কনফিগারেশনে আপনি রিপোর্টের ফরম্যাট এবং আউটপুট ফাইলের লোকেশন নির্ধারণ করতে পারেন। TestNG ডিফল্টভাবে test-output ফোল্ডারে HTML এবং XML রিপোর্ট তৈরি করে।
উদাহরণ: TestNG রিপোর্ট জেনারেশন
ধরা যাক, আপনার কাছে একটি সাধারণ TestNG টেস্ট রয়েছে এবং আপনি সেই টেস্টের জন্য HTML রিপোর্ট তৈরি করতে চান।
1. TestNG টেস্ট কেস তৈরি করা
প্রথমে একটি সাধারণ TestNG টেস্ট কেস তৈরি করা যাক।
import org.testng.Assert;
import org.testng.annotations.Test;
public class SimpleTest {
@Test
public void testSuccess() {
Assert.assertEquals(2 + 2, 4);
}
@Test
public void testFailure() {
Assert.assertEquals(2 + 2, 5);
}
}
এই উদাহরণে দুটি টেস্ট কেস রয়েছে। প্রথমটি সফল এবং দ্বিতীয়টি ব্যর্থ হবে কারণ ২ + ২ এর মান ৫ এর সাথে মিলে না।
2. TestNG কনফিগারেশন (testng.xml)
এখন একটি testng.xml কনফিগারেশন ফাইল তৈরি করতে হবে যাতে TestNG জানে কোন টেস্ট কেসগুলো রান করতে হবে এবং রিপোর্ট কোথায় জমা হবে। নিচে একটি testng.xml কনফিগারেশন ফাইলের উদাহরণ দেওয়া হলো:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Test Suite">
<test name="Test">
<classes>
<class name="SimpleTest"/>
</classes>
</test>
</suite>
3. TestNG টেস্ট রান করা
এখন আপনি testng.xml ফাইলের মাধ্যমে টেস্ট রান করতে পারবেন। Eclipse বা IntelliJ IDEA ব্যবহার করলে, testng.xml ফাইলটি সিলেক্ট করে "Run" অপশন ব্যবহার করতে পারেন।
4. রিপোর্ট আউটপুট
টেস্ট রান করার পর, TestNG স্বয়ংক্রিয়ভাবে একটি test-output ফোল্ডার তৈরি করবে এবং সেখানে HTML এবং XML ফরম্যাটে রিপোর্ট জমা করবে। সাধারণত, এই ফোল্ডারটি আপনার প্রোজেক্টের রুট ডিরেক্টরিতে পাওয়া যাবে।
উদাহরণস্বরূপ, টেস্ট রান করার পর আপনি নিচের ফাইলগুলো দেখতে পাবেন:
index.html: HTML ফরম্যাটে টেস্ট রিপোর্ট।emailable-report.html: আরো বিস্তারিত HTML রিপোর্ট, যা সহজে অন্যদের কাছে পাঠানো যায়।testng-results.xml: XML ফরম্যাটে টেস্টের ফলাফল।
5. HTML রিপোর্ট দেখতে
আপনি test-output/index.html ফাইলটি ব্রাউজারে ওপেন করে রিপোর্ট দেখতে পারবেন। এখানে টেস্টের সারাংশ, সফল/ব্যর্থ টেস্টের সংখ্যা, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য থাকবে।
TestNG রিপোর্ট কাস্টমাইজেশন
TestNG রিপোর্ট কাস্টমাইজ করতে আপনি Reporter ক্লাস ব্যবহার করতে পারেন যা বিশেষ করে রিপোর্টের কাস্টম বার্তা যোগ করতে কাজে আসে।
import org.testng.Reporter;
import org.testng.annotations.Test;
public class CustomReportTest {
@Test
public void testWithCustomReport() {
Reporter.log("This is a custom log message for the test.", true);
}
}
এই ধরনের কাস্টম লোগ মেসেজ HTML রিপোর্টে প্রদর্শিত হবে।
এভাবে TestNG স্বয়ংক্রিয়ভাবে টেস্ট রিপোর্ট তৈরি করে এবং তা বিভিন্ন ফরম্যাটে সঞ্চয় করে। এটি টেস্টের ফলাফল বিশ্লেষণ করতে এবং ভবিষ্যতে প্রয়োজনীয় পরিবর্তন বা ডিবাগিংয়ের জন্য গুরুত্বপূর্ণ তথ্য প্রদান করতে সহায়তা করে।
Read more