JUnit হল একটি জনপ্রিয় Java টেস্টিং ফ্রেমওয়ার্ক যা ইউনিট টেস্টিংয়ের জন্য ব্যবহৃত হয়। এটি প্রোগ্রামারদের কোডের ছোট অংশগুলি পরীক্ষা করতে সহায়তা করে, যাতে কোনো পরিবর্তন বা নতুন ফিচার যোগ করার পর পুরনো কোড ঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা যায়।
JUnit 5 (Jupiter) এ কিছু নতুন বৈশিষ্ট্য এবং অ্যানোটেশন যুক্ত করা হয়েছে, যেমন conditional tests এবং repeated tests, যা টেস্টিং পদ্ধতিকে আরও কার্যকরী ও নমনীয় করে তোলে। এই টিউটোরিয়ালে, আমরা JUnit 5 এর মধ্যে Conditional এবং Repeated Test Setup সম্পর্কিত কিছু উদাহরণ দেখব।
১. Conditional Test Setup
Conditional Test এমন একটি টেস্ট যেখানে টেস্টটি নির্দিষ্ট শর্তে চালানো হয়। উদাহরণস্বরূপ, কোনো টেস্ট ফাংশন শুধুমাত্র নির্দিষ্ট প্ল্যাটফর্মে বা নির্দিষ্ট অবস্থায় চালানো উচিত।
১.১ @EnabledIf এবং @DisabledIf অ্যানোটেশন
JUnit 5 এ @EnabledIf এবং @DisabledIf অ্যানোটেশন ব্যবহার করে শর্তসাপেক্ষ টেস্ট তৈরি করা যেতে পারে। এই অ্যানোটেশনগুলো টেস্ট চালানোর পূর্বে নির্দিষ্ট শর্ত যাচাই করে।
উদাহরণ: @EnabledIf ব্যবহার করা
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
public class ConditionalTest {
@Test
@EnabledIf(expression = "#{systemProperties['os.name'].contains('Windows')}", reason = "Only run on Windows OS")
void testOnlyOnWindows() {
System.out.println("This test runs only on Windows OS");
}
}
এখানে, @EnabledIf অ্যানোটেশনটি চেক করবে যে সিস্টেমের OS উইন্ডোজ কিনা। যদি উইন্ডোজ না হয়, তাহলে টেস্টটি চলবে না।
উদাহরণ: @DisabledIf ব্যবহার করা
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIf;
public class ConditionalTest {
@Test
@DisabledIf(expression = "#{systemProperties['os.name'].contains('Mac')}", reason = "Do not run on Mac OS")
void testNotOnMac() {
System.out.println("This test will not run on Mac OS");
}
}
এখানে, @DisabledIf অ্যানোটেশনটি নিশ্চিত করবে যে Mac OS-এ টেস্টটি চালানো হবে না।
২. Repeated Test Setup
Repeated Tests হল এমন টেস্ট যেখানে একই টেস্টটি একাধিকবার চালানো হয়, যা সাধারণত কোনো নির্দিষ্ট লজিক বা ফাংশনালিটির কার্যকারিতা নিশ্চিত করার জন্য ব্যবহৃত হয়।
২.১ @RepeatedTest অ্যানোটেশন
JUnit 5 এ @RepeatedTest অ্যানোটেশন ব্যবহারের মাধ্যমে একই টেস্টকে একাধিকবার চালানো যায়। এটি test repetition এর জন্য উপকারী, বিশেষত যখন টেস্টের ফলাফল নির্ভরশীল হতে পারে এবং একাধিক রান প্রয়োজন হয়।
উদাহরণ: @RepeatedTest ব্যবহার করা
import org.junit.jupiter.api.RepeatedTest;
public class RepeatedTestExample {
@RepeatedTest(5)
void testRepeatedly() {
System.out.println("This test is run 5 times");
}
}
এখানে, @RepeatedTest(5) অ্যানোটেশনটি testRepeatedly মেথডটি ৫ বার চালাবে।
২.২ @BeforeEach এবং @AfterEach এর সাথে Repeated Test Setup
আপনি @BeforeEach এবং @AfterEach অ্যানোটেশন ব্যবহার করে প্রতিটি টেস্টের আগে এবং পরে কিছু নির্দিষ্ট কাজ সম্পন্ন করতে পারেন, যেমন ইনিশিয়ালাইজেশন বা টেস্ট পরিষ্কার করা।
উদাহরণ: @BeforeEach এবং @AfterEach ব্যবহার করা
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.RepeatedTest;
public class RepeatedTestWithSetup {
@BeforeEach
void setup() {
System.out.println("Setting up before each test");
}
@RepeatedTest(3)
void testRepeatedly() {
System.out.println("Running repeated test");
}
@AfterEach
void cleanup() {
System.out.println("Cleaning up after each test");
}
}
এখানে:
- @BeforeEach টেস্টের আগে প্রয়োজনীয় সেটআপ করবে।
- @RepeatedTest(3) টেস্টটি তিনবার চালাবে।
- @AfterEach টেস্টের পরে ক্লিনআপ করবে।
৩. Conditional Test and Repeated Test Combination
কখনও কখনও আপনি একই টেস্টে conditional এবং repeated test ব্যবহার করতে চাইতে পারেন, যেমন নির্দিষ্ট অবস্থায় টেস্টটি একাধিকবার চালানো।
উদাহরণ: Conditional Test with Repeated Test
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.condition.EnabledIf;
public class ConditionalRepeatedTest {
@RepeatedTest(3)
@EnabledIf(expression = "#{systemProperties['os.name'].contains('Linux')}", reason = "Only run on Linux OS")
void testRepeatedlyOnLinux() {
System.out.println("This test runs 3 times only on Linux OS");
}
}
এখানে, @EnabledIf নিশ্চিত করবে যে টেস্টটি শুধুমাত্র Linux OS-এ চালানো হবে, এবং @RepeatedTest(3) সেটি তিনবার চালাবে।
সারাংশ
JUnit 5 এর Conditional Test এবং Repeated Test ফিচারগুলি টেস্টিং পদ্ধতিকে আরও নমনীয় এবং শক্তিশালী করে তোলে।
- Conditional Tests আপনাকে শর্ত সাপেক্ষে টেস্ট চালানোর সুযোগ দেয়, যেমন কোনো নির্দিষ্ট প্ল্যাটফর্মে টেস্ট চালানো বা কোনো নির্দিষ্ট কন্ডিশনের উপর ভিত্তি করে টেস্ট সক্রিয় বা নিষ্ক্রিয় করা।
- Repeated Tests একাধিকবার টেস্ট চালানোর সুবিধা দেয়, যা বিশেষভাবে তখন প্রয়োজনীয় হয় যখন আপনি নিশ্চিত হতে চান যে টেস্টটি নির্দিষ্ট সংখ্যক বার সফলভাবে চলেছে।
এভাবে, JUnit 5 এর নতুন অ্যানোটেশন এবং টেস্ট কনফিগারেশন টুলগুলি আপনার টেস্টিং পদ্ধতিকে আরও কার্যকরী এবং সহায়ক করে তোলে।
Read more