JUnit একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় ইউনিট টেস্ট লেখার জন্য ব্যবহৃত হয়। এর মধ্যে কিছু অ্যানোটেশন রয়েছে যা আপনাকে নির্দিষ্ট কন্ডিশনাল টেস্ট চালাতে সাহায্য করে, অর্থাৎ একটি টেস্ট নির্দিষ্ট শর্তে চালানো যাবে। দুটি গুরুত্বপূর্ণ অ্যানোটেশন যা কন্ডিশনাল টেস্ট চালানোর জন্য ব্যবহার করা হয়, তা হল @EnabledOnOs এবং @EnabledIf।
এই অ্যানোটেশনগুলি আপনাকে নির্দিষ্ট শর্ত বা পরিবেশে টেস্ট চালানোর অনুমতি দেয়, যেমন OS নির্ভর টেস্টিং বা কাস্টম কন্ডিশন অনুসারে টেস্ট চালানো।
১. @EnabledOnOs অ্যানোটেশন
@EnabledOnOs অ্যানোটেশনটি নির্দিষ্ট অপারেটিং সিস্টেমে টেস্ট চালানোর জন্য ব্যবহার করা হয়। এটি সাধারণত JUnit 5 এ ব্যবহৃত হয় এবং টেস্ট চালানোর জন্য যে অপারেটিং সিস্টেম প্রয়োজন, তা নির্দিষ্ট করা যায়।
উদাহরণ:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS;
public class OperatingSystemTest {
@Test
@EnabledOnOs(OS.WINDOWS)
void testOnWindows() {
System.out.println("This test is running on Windows OS");
}
@Test
@EnabledOnOs(OS.LINUX)
void testOnLinux() {
System.out.println("This test is running on Linux OS");
}
}
এখানে, @EnabledOnOs অ্যানোটেশনটি testOnWindows() মেথডকে শুধুমাত্র Windows অপারেটিং সিস্টেমে চালাতে দিবে এবং testOnLinux() মেথডটিকে শুধুমাত্র Linux অপারেটিং সিস্টেমে চালাবে।
@EnabledOnOs এর বিভিন্ন OS উদাহরণ:
- OS.WINDOWS: উইন্ডোজ অপারেটিং সিস্টেমে টেস্ট চালানো হবে।
- OS.LINUX: লিনাক্স অপারেটিং সিস্টেমে টেস্ট চালানো হবে।
- OS.MAC: ম্যাক অপারেটিং সিস্টেমে টেস্ট চালানো হবে।
- OS.ANY: যেকোনো অপারেটিং সিস্টেমে টেস্ট চালানো যাবে।
২. @EnabledIf অ্যানোটেশন
@EnabledIf অ্যানোটেশনটি আরও কাস্টম শর্তে টেস্ট চালানোর জন্য ব্যবহৃত হয়। এটি আপনাকে বিশেষ শর্ত অনুযায়ী টেস্ট চালানোর অনুমতি দেয়। আপনি একটি কন্ডিশনাল এক্সপ্রেশন অথবা কাস্টম কন্ডিশন ব্যবহার করতে পারেন, যা Boolean মান রিটার্ন করবে। এটি সাধারণত কন্ডিশনাল লজিক অথবা কাস্টম কন্ডিশনাল টেস্ট চালানোর জন্য ব্যবহৃত হয়।
উদাহরণ:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
public class ConditionalTest {
@Test
@EnabledIf("customCondition")
void testIfConditionIsTrue() {
System.out.println("This test runs only if the condition is true");
}
boolean customCondition() {
return true; // condition can be based on any logic
}
}
এখানে, customCondition() মেথডটি একটি কন্ডিশন চেক করছে। যদি এই কন্ডিশনটি সত্য (true) হয়, তাহলে testIfConditionIsTrue() মেথডটি চলবে। আপনি এখানে কোনো কাস্টম লজিক প্রয়োগ করতে পারেন, যেমন কোন পরিবেশের সেটিংস, সিস্টেম প্রোপার্টি চেক বা কোনো ডেটা কন্ডিশন ইত্যাদি।
৩. @EnabledIf এবং @EnabledOnOs এর মধ্যে পার্থক্য
- @EnabledOnOs: এটি নির্দিষ্ট অপারেটিং সিস্টেমে টেস্ট চালানোর জন্য ব্যবহার করা হয়।
- @EnabledIf: এটি কাস্টম কন্ডিশন বা শর্ত অনুসারে টেস্ট চালানোর জন্য ব্যবহৃত হয়।
৪. কাস্টম কন্ডিশনাল টেস্টিং উদাহরণ
এখানে, আমরা একটি উদাহরণ দেখব যেখানে @EnabledIf কন্ডিশন ব্যবহার করে একটি টেস্ট চালানো হবে কেবলমাত্র যদি সিস্টেম প্রোপার্টি নির্দিষ্ট মানের সাথে মেলে।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
public class CustomConditionTest {
@Test
@EnabledIf("java.specification.version >= '11'")
void testForJava11AndAbove() {
System.out.println("This test is enabled only if Java version is 11 or above");
}
}
এখানে, @EnabledIf কন্ডিশনটি পরীক্ষা করে যে Java version 11 বা তার উপরে রয়েছে কিনা। যদি শর্তটি পূর্ণ হয়, তবে টেস্টটি চালানো হবে।
৫. JUnit 5 এ Conditional Test চালানোর সুবিধা
- System and Environment Specific Tests: আপনি সিস্টেম বা পরিবেশ নির্ভর টেস্ট চালাতে পারেন, যেমন অপারেটিং সিস্টেম বা Java ভার্সন অনুসারে টেস্ট চালানো।
- Custom Conditions: JUnit 5-এ আপনি কাস্টম কন্ডিশন তৈরি করতে পারেন, যা শুধুমাত্র বিশেষ পরিস্থিতিতে টেস্ট চালানোর অনুমতি দেয়।
- Flexible Test Execution: বিভিন্ন পরিস্থিতিতে টেস্টের কার্যকারিতা এবং আউটপুট পরিবর্তন করতে সহায়ক, যা সঠিকভাবে টেস্ট করার সম্ভাবনা বাড়ায়।
সারাংশ
@EnabledOnOs এবং @EnabledIf অ্যানোটেশনগুলি JUnit 5 এর নতুন ফিচার যা আপনাকে কন্ডিশনাল টেস্ট চালাতে সহায়তা করে। @EnabledOnOs দিয়ে নির্দিষ্ট অপারেটিং সিস্টেমে টেস্ট চালানো সম্ভব, এবং @EnabledIf দিয়ে আপনি কাস্টম কন্ডিশন বা শর্ত অনুসারে টেস্ট চালাতে পারবেন। এটি বিভিন্ন পরিবেশে টেস্টিং সহজ এবং কার্যকরী করে তোলে এবং শর্তাধীন টেস্টিংয়ের সুবিধা প্রদান করে।
Read more