TestNG Logging Integration টেস্টিং প্রক্রিয়ার মধ্যে লগিং ব্যবহারের একটি গুরুত্বপূর্ণ অংশ। লগিং সিস্টেমে টেস্ট কেসের ফলাফল, এর কার্যক্রম, এবং যেকোনো সমস্যা বা ব্যতিক্রম (exception) সম্পর্কে তথ্য সংগ্রহ করা হয়। TestNG নিজেই Log4j বা SLF4J এর মতো লগিং লাইব্রেরি ইন্টিগ্রেট করতে সাহায্য করে, যা আপনার টেস্ট ফলাফল বিশ্লেষণ এবং ডিবাগিং করতে সহায়ক।
লগিং কী এবং এর গুরুত্ব
লগিং হলো কোডের কার্যক্রমের রেকর্ড রাখা, যা টেস্ট চলাকালীন সময়ে বিভিন্ন তথ্য যেমন, সাফল্য, ব্যর্থতা, বা যে কোনো ত্রুটি রেকর্ড করে। এটি ডেভেলপার এবং টেস্টারের জন্য খুবই উপকারী, কারণ এটি টেস্টিং প্রক্রিয়া সম্পন্ন হওয়ার পর আপনার সমস্যার দ্রুত সমাধান করতে সহায়ক।
TestNG এর সাথে লগিং ইন্টিগ্রেশন
টেস্টএনজি লগিং এর জন্য সাধারণত Log4j বা java.util.logging ব্যবহার করা হয়। এখানে আমরা Log4j 2 এর সাথে TestNG ইন্টিগ্রেশন দেখবো।
প্রয়োজনীয় লাইব্রেরি
TestNG এবং Log4j2 ইন্টিগ্রেট করার জন্য প্রথমে আপনাকে কিছু লাইব্রেরি যোগ করতে হবে। এই লাইব্রেরিগুলি আপনি Maven বা Gradle ব্যবহার করে যোগ করতে পারেন।
Maven ব্যবহারকারীদের জন্য pom.xml এ নির্ভরতাগুলি:
<dependencies>
<!-- TestNG dependency -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
<scope>test</scope>
</dependency>
<!-- Log4j2 dependency -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
</dependencies>
Log4j2 কনফিগারেশন
Log4j2-এর কনফিগারেশন একটি log4j2.xml ফাইলে করা হয়, যা আপনার প্রজেক্টের src/main/resources/ ফোল্ডারে রাখতে হবে।
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
এই কনফিগারেশনটি আপনার কনসোলে লগ মেসেজগুলি প্রিন্ট করবে, এবং আপনি লগের স্তর যেমন debug, info, warn, error ইত্যাদি নির্ধারণ করতে পারবেন।
TestNG লগিং উদাহরণ
এখন আসুন আমরা TestNG টেস্ট ক্লাসে Log4j2 লগিং ইন্টিগ্রেট করি। নিচে একটি উদাহরণ দেওয়া হলো:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.annotations.Test;
public class LoggingExampleTest {
// Log4j2 logger তৈরি
private static final Logger logger = LogManager.getLogger(LoggingExampleTest.class);
@Test
public void testSuccess() {
logger.info("Test started: testSuccess");
System.out.println("Executing successful test.");
logger.info("Test completed: testSuccess");
}
@Test
public void testFailure() {
logger.info("Test started: testFailure");
try {
// এই টেস্টটি ইচ্ছাকৃতভাবে ব্যর্থ হবে
int result = 1 / 0;
} catch (Exception e) {
logger.error("Test failed due to an exception: " + e.getMessage(), e);
}
logger.info("Test completed: testFailure");
}
}
কোড বিশ্লেষণ:
- Logger Initialization:
LogManager.getLogger()ব্যবহার করে একটি logger তৈরি করা হয়, যা আমাদের টেস্ট ক্লাসের জন্য লগ রেকর্ড করবে। - Logging Levels:
logger.info(): সাধারণ তথ্য প্রদান করে।logger.error(): কোনো সমস্যা বা ব্যতিক্রম (exception) ঘটলে ত্রুটি লগ করে।
- Log Messages:
আমরা টেস্ট শুরু হওয়ার এবং শেষ হওয়ার সময় লগ মেসেজ প্রিন্ট করি, যাতে টেস্টের অবস্থা সহজে বুঝতে পারি।
টেস্ট আউটপুট
যখন আপনি উপরের কোডটি চালাবেন, কনসোলে নিচের আউটপুট দেখতে পারবেন:
2024-12-18 14:23:45 [main] INFO LoggingExampleTest - Test started: testSuccess
Executing successful test.
2024-12-18 14:23:45 [main] INFO LoggingExampleTest - Test completed: testSuccess
2024-12-18 14:23:46 [main] INFO LoggingExampleTest - Test started: testFailure
2024-12-18 14:23:46 [main] ERROR LoggingExampleTest - Test failed due to an exception: / by zero
java.lang.ArithmeticException: / by zero
at LoggingExampleTest.testFailure(LoggingExampleTest.java:18)
2024-12-18 14:23:46 [main] INFO LoggingExampleTest - Test completed: testFailure
এই আউটপুটে আপনি দুটি মেসেজ দেখতে পাবেন:
- testSuccess টেস্টটি সফলভাবে সম্পন্ন হয়েছে।
- testFailure টেস্টটি ব্যর্থ হয়েছে এবং ব্যতিক্রমের বিস্তারিত লগ করা হয়েছে।
সারাংশ
TestNG এবং Log4j2 ইন্টিগ্রেশন টেস্টিং কার্যক্রমে কার্যকরী লগিংয়ের মাধ্যমে টেস্ট ফলাফল বিশ্লেষণ এবং সমস্যা সমাধান প্রক্রিয়া সহজ করে তোলে। এই উদাহরণে আমরা দেখেছি কিভাবে TestNG টেস্ট কেসে Log4j2 ব্যবহার করে লগ মেসেজ রেকর্ড করতে হয়, যা টেস্টের স্থিতি এবং সমস্যা সনাক্ত করতে সাহায্য করে।