JUnit হল একটি ইউনিট টেস্টিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এটি পরীক্ষামূলক কোডের নির্ভরযোগ্যতা নিশ্চিত করতে সহায়তা করে। JUnit পরীক্ষার ফলাফল সহ বিভিন্ন ধরনের লগিং এবং রিপোর্ট জেনারেশন কার্যক্রম পরিচালনা করতে সহায়তা করে। এই টিউটোরিয়ালে, আমরা Custom Logging এবং Report Generation এর সাথে সম্পর্কিত একটি JUnit টেস্টিং উদাহরণ দেখব।
১. JUnit Test এর সাথে Custom Logging
Custom Logging JUnit টেস্টের আউটপুট লগ করে এবং পরীক্ষার ফলাফল বিশ্লেষণ করতে সহায়তা করে। যখন আপনি JUnit টেস্ট চালান, আপনি loggers ব্যবহার করে টেস্টের অবস্থান এবং আউটপুট ট্র্যাক করতে পারেন।
১.১ Custom Logging উদাহরণ
এখানে আমরা SLF4J লগিং ফ্রেমওয়ার্ক এবং Logback ব্যবহার করব, যা JUnit টেস্টের মধ্যে লগিং করতে ব্যবহৃত হবে।
pom.xml (Maven Dependency)
<dependencies>
<!-- SLF4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version>
</dependency>
<!-- Logback Classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
</dependencies>
logback.xml (Logback Configuration)
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="stdout"/>
</root>
</configuration>
JUnit Test Class with Logging
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class LoggingTest {
private static final Logger logger = LoggerFactory.getLogger(LoggingTest.class);
@Test
void testWithLogging() {
logger.info("Test started");
// Custom logic
int a = 5;
int b = 10;
int sum = a + b;
logger.debug("Sum of {} and {} is {}", a, b, sum);
assertTrue(sum == 15, "Sum should be 15");
logger.info("Test completed successfully");
}
}
এখানে, আমরা SLF4J লগিং ব্যবহার করে JUnit টেস্টের মধ্যে বিভিন্ন লগ স্তরে তথ্য প্রিন্ট করেছি। info এবং debug লগ স্তর ব্যবহার করা হয়েছে টেস্টের শুরু, ফলাফল এবং সফল সমাপ্তির জন্য।
২. JUnit Test Reporting
JUnit টেস্ট রেজাল্টের জন্য রিপোর্ট জেনারেট করা JUnit প্লাগইন ব্যবহার করে সম্ভব। এটি ডিফল্টভাবে টেস্ট রেজাল্ট XML আউটপুট তৈরি করে এবং আপনি এটি বিশ্লেষণ বা কাস্টম রিপোর্ট তৈরির জন্য ব্যবহার করতে পারেন।
২.১ JUnit Report Generation
JUnit 5 প্লাগইন ব্যবহার করে টেস্ট রিপোর্ট তৈরির জন্য Maven এ Surefire Plugin এবং Failsafe Plugin কনফিগার করা হয়।
pom.xml (Maven Surefire Plugin Configuration)
<build>
<plugins>
<!-- Surefire Plugin for Unit Tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<useFile>false</useFile>
</configuration>
</plugin>
<!-- Failsafe Plugin for Integration Tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>
এখানে, maven-surefire-plugin এবং maven-failsafe-plugin রিপোর্ট জেনারেট করতে ব্যবহৃত হচ্ছে।
২.২ Test Report Generation Example
Maven ব্যবহার করে JUnit Test রিপোর্ট জেনারেট করতে mvn surefire-report:report কমান্ড ব্যবহার করা হয়।
mvn clean test surefire-report:report
এই কমান্ডটি target/site ফোল্ডারে একটি HTML রিপোর্ট তৈরি করবে যা আপনি টেস্টের ফলাফল দেখার জন্য ব্যবহার করতে পারবেন।
৩. JUnit Test Report Customization
JUnit টেস্ট রিপোর্ট কাস্টমাইজেশন করতে আপনি JUnit Platform এবং Maven Surefire Plugin এর কনফিগারেশন ব্যবহার করতে পারেন। আপনি যদি টেস্ট রিপোর্টে নির্দিষ্ট কিছু অংশ হাইলাইট করতে চান, বা যদি আপনি JSON বা XML আউটপুট চান, তবে আপনি Surefire Plugin এর কনফিগারেশনের মাধ্যমে এটি কাস্টমাইজ করতে পারেন।
Custom Report Example (pom.xml)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<reportFormat>xml</reportFormat> <!-- Set the output format -->
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
এখানে, এলিমেন্টের মাধ্যমে রিপোর্টের আউটপুট ফরম্যাট কনফিগার করা হয়েছে।
৪. JUnit Test Reporting for CI/CD Integration
JUnit টেস্ট রিপোর্টগুলি CI/CD টুল (যেমন Jenkins, GitLab CI, Bamboo ইত্যাদি) এর মাধ্যমে স্বয়ংক্রিয়ভাবে ব্যবহৃত হতে পারে। Jenkins ব্যবহারকারীরা সাধারণত JUnit Plugin ব্যবহার করে পরীক্ষার ফলাফলগুলি ভিজ্যুয়ালি দেখতে পারেন।
Jenkins Example:
- Jenkins তে JUnit Plugin ইনস্টল করুন।
- আপনার মাভেন প্রোজেক্টে JUnit টেস্ট রান করুন।
- Jenkins টাস্কের আউটপুট হিসেবে JUnit Test Report ট্যাব দেখতে পারবেন, যেখানে সব টেস্টের ফলাফল দেখানো হবে।
সারাংশ
JUnit টেস্টিং ফ্রেমওয়ার্কে Custom Logging এবং Report Generation অতিরিক্ত টুল এবং কনফিগারেশন ব্যবহার করে টেস্ট ফলাফল ট্র্যাক এবং বিশ্লেষণ করতে সহায়তা করে। SLF4J এবং Logback এর মাধ্যমে টেস্টের মধ্যে লগিং পরিচালনা করা যেতে পারে, এবং Maven Surefire Plugin ব্যবহার করে টেস্ট রিপোর্ট জেনারেট করা যায়। এছাড়াও, CI/CD টুলগুলির মাধ্যমে JUnit টেস্ট রিপোর্টের ইন্টিগ্রেশন এবং বিশ্লেষণ করা সম্ভব।
Read more