JUnit একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামগুলির ইউনিট টেস্টিং জন্য ব্যবহৃত হয়। এটি বিশেষভাবে কোডের গুণগত মান বজায় রাখতে এবং টেস্টের মাধ্যমে bugs সনাক্ত করতে সাহায্য করে। Jenkins একটি স্বয়ংক্রিয় ইন্টিগ্রেশন এবং ডিপ্লয়মেন্ট (CI/CD) টুল যা আপনাকে JUnit টেস্টের সাথে বিল্ড ও টেস্ট প্রক্রিয়া অটোমেট করতে সহায়তা করে।
এখানে, আমরা দেখব কিভাবে JUnit Tests কে Jenkins Pipeline এর মধ্যে ইন্টিগ্রেট করা যায় এবং Jenkins কে ব্যবহার করে JUnit Test এর ফলাফল সংগ্রহ করা যায়।
১. Jenkins Pipeline Overview
Jenkins Pipeline একটি সেট অব স্টেপ যা বিভিন্ন বিল্ড, টেস্ট, ডিপ্লয়মেন্ট, এবং অন্যান্য DevOps টাস্ক অটোমেট করতে সাহায্য করে। Jenkins Pipeline দুটি প্রধান ভাগে বিভক্ত:
- Declarative Pipeline: এটি একটি স্ট্রাকচারড পদ্ধতি যেখানে বিল্ড এবং ডিপ্লয়মেন্টের জন্য নির্দিষ্ট স্টেপ দেয়া হয়।
- Scripted Pipeline: এটি একটি ফ্রি-ফর্ম পদ্ধতি যেখানে স্ক্রিপ্টিং ব্যবহার করে Pipeline কনফিগার করা হয়।
২. Jenkins Pipeline এ JUnit Test Integration করার প্রক্রিয়া
২.১ JUnit Test Set Up
JUnit টেস্ট ইন্টিগ্রেট করার আগে, আপনার Java প্রোজেক্টে JUnit টেস্ট সেটআপ করা থাকতে হবে। উদাহরণস্বরূপ:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CalculatorTest {
@Test
public void testAddition() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result);
}
}
এখানে, CalculatorTest একটি JUnit টেস্ট ক্লাস, যেখানে add() মেথড টেস্ট করা হচ্ছে।
২.২ JUnit Dependency (Maven)
JUnit টেস্ট ফ্রেমওয়ার্ক আপনার প্রোজেক্টে অন্তর্ভুক্ত করতে হবে। Maven এর জন্য, আপনাকে pom.xml ফাইলে JUnit ডিপেনডেন্সি যোগ করতে হবে:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
২.৩ JUnit Test Report Plugin (Maven)
JUnit টেস্ট রিপোর্টগুলি দেখতে হলে, আপনাকে Maven Surefire Plugin কনফিগার করতে হবে যা টেস্ট ফলাফল জেনারেট করবে।
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>
৩. Jenkins Pipeline কনফিগারেশন
এখন, Jenkinsfile এ JUnit টেস্ট রান এবং রিপোর্ট জেনারেট করার কনফিগারেশন করতে হবে। আমরা Declarative Pipeline স্টাইল ব্যবহার করে উদাহরণটি দেখাব।
৩.১ Declarative Jenkinsfile উদাহরণ:
pipeline {
agent any
tools {
// Set Maven and JDK tool versions
maven 'Maven 3'
jdk 'OpenJDK 11'
}
stages {
stage('Checkout') {
steps {
// Checkout code from Git
git 'https://github.com/your-repo/your-project.git'
}
}
stage('Build') {
steps {
// Run Maven to build the project
sh 'mvn clean install'
}
}
stage('Test') {
steps {
// Run JUnit tests and generate reports
sh 'mvn test'
}
post {
always {
// Publish JUnit test results
junit '**/target/test-classes/TEST-*.xml'
}
}
}
stage('Deploy') {
steps {
// Deploy to server or environment
echo 'Deploying the application'
}
}
}
post {
success {
echo 'Build and Test passed successfully!'
}
failure {
echo 'Build or Test failed!'
}
}
}
৩.২ Jenkinsfile স্টেপস বর্ণনা
- Checkout: Git রিপোজিটরি থেকে কোড ক্লোন করা হয়।
- Build:
mvn clean installকমান্ড চালানো হয়, যা Maven প্রোজেক্ট বিল্ড করবে এবং ডিপেনডেন্সি ডাউনলোড করবে। - Test:
mvn testকমান্ড ব্যবহার করে JUnit টেস্ট চালানো হয়। টেস্ট শেষে JUnit টেস্ট রিপোর্ট জেনারেট হবে। - Deploy: সফল হলে ডিপ্লয়মেন্ট স্টেপ চলে আসে (এটি পরীক্ষামূলক, আপনার প্রকল্প অনুযায়ী কাস্টমাইজ করতে হবে)।
৩.৩ JUnit রিপোর্ট পাবলিশ করা
junit '**/target/test-classes/TEST-*.xml'
এই স্টেপটি JUnit টেস্ট রিপোর্টকে Jenkins পিপলাইনে রিপোর্ট হিসেবে আউটপুট করে। Jenkins পিপলাইন কনফিগারেশন শেষে, আপনি JUnit টেস্টের ফলাফল এবং রিপোর্ট দেখতে পারবেন।
৪. Jenkins এর মধ্যে JUnit টেস্ট রিপোর্ট দেখা
Jenkins পিপলাইন চলানোর পর, আপনি টেস্ট ফলাফল দেখতে পারবেন। Jenkins UI তে:
- আপনার পিপলাইন প্রজেক্টে যান।
Test Resultসেকশনে টেস্ট রিপোর্ট এবং স্ট্যাটাস দেখুন।- আপনি এখানে Pass অথবা Fail স্ট্যাটাস, টেস্ট কভারেজ এবং ফলাফল দেখতে পারবেন।
এছাড়াও, Jenkins টেস্ট রিপোর্টে Test Duration, Error Logs এবং Stack Trace বিস্তারিত তথ্য দেখানো হবে।
৫. JUnit টেস্ট রিপোর্টের আরও কাস্টমাইজেশন
Jenkins এ JUnit Test Reports আরো কাস্টমাইজ করতে চাইলে, আপনি JUnit Plugin এর কনফিগারেশন ব্যবহার করতে পারেন, যেমন:
- Test Failures: যে টেস্টগুলো ব্যর্থ হয়েছে, তাদের বিস্তারিত লগ প্রদর্শন করা।
- Test Categories: টেস্টগুলো ক্যাটাগরি অনুযায়ী ভাগ করা।
- Test Duration: প্রতিটি টেস্ট রান করার জন্য প্রয়োজনীয় সময়।
সারাংশ
Jenkins Pipeline এ JUnit Test Integration ব্যবহারের মাধ্যমে আপনি স্বয়ংক্রিয়ভাবে আপনার Java প্রোজেক্টের টেস্টিং প্রক্রিয়া পরিচালনা করতে পারবেন। এতে JUnit টেস্ট রান করে টেস্ট রিপোর্ট তৈরি হবে এবং Jenkins UI তে টেস্ট ফলাফল প্রদর্শিত হবে। এছাড়া, Jenkins আপনাকে পুরো বিল্ড এবং টেস্ট প্রক্রিয়া মনিটর এবং ট্র্যাক করতে সহায়তা করবে।
Read more