JUnit হলো Java এর জন্য একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক, যা ইউনিট টেস্ট, ইনটিগ্রেশন টেস্ট এবং অন্যান্য ধরণের টেস্ট লেখার জন্য ব্যবহৃত হয়। JUnit 5 এর নতুন ফিচারগুলোর মধ্যে একটি হলো @RepeatedTest অ্যানোটেশন, যা আপনাকে একটি টেস্ট মেথড একাধিকবার চালানোর সুযোগ দেয়।
@RepeatedTest অ্যানোটেশন ব্যবহার করলে আপনি নির্দিষ্ট সংখ্যক বার একই টেস্ট মেথডটি চালাতে পারেন। এটি তখন ব্যবহৃত হয় যখন আপনাকে একটি নির্দিষ্ট টেস্টের কার্যকারিতা একাধিকবার যাচাই করতে হয়।
১. @RepeatedTest এর মৌলিক ধারণা
@RepeatedTest অ্যানোটেশন JUnit 5 এর অংশ এবং এটি একটি টেস্ট মেথডের জন্য সংখ্যা নির্ধারণ করতে সহায়তা করে, যাতে একই টেস্ট একাধিক বার চালানো যায়। এর মাধ্যমে আপনি একই টেস্টের ফলাফল বিভিন্ন বার পরীক্ষা করতে পারেন, বিশেষত যখন টেস্টের নির্দিষ্ট আচরণ বা অবস্থা নিশ্চিত করতে চাই।
এটি সাধারণত performance testing, reliability testing, বা stress testing এর জন্য ব্যবহৃত হয়, যেখানে একই কোডের ওপর অনেক বার টেস্ট চালানো হয়।
উদাহরণ:
import org.junit.jupiter.api.RepeatedTest;
public class MyTest {
@RepeatedTest(5) // 5 বার একই টেস্ট চালাবে
void repeatedTest() {
System.out.println("Running repeated test");
}
}
উপরের উদাহরণে, @RepeatedTest(5) দ্বারা repeatedTest() মেথডটি 5 বার চালানো হবে।
২. @RepeatedTest এর সাথে Parameterized Tests
@RepeatedTest এর মাধ্যমে শুধুমাত্র টেস্টের পুনরাবৃত্তি করা যায়, কিন্তু যদি আপনি টেস্টের মধ্যে কিছু ভ্যালু প্যারামিটার হিসেবে দিতে চান, তাহলে parameterized tests ব্যবহার করা যেতে পারে।
উদাহরণ:
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class MyTest {
@RepeatedTest(3)
void repeatedTest() {
System.out.println("Running repeated test");
}
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4})
void testWithValues(int number) {
System.out.println("Testing with value: " + number);
}
}
এখানে, @ValueSource ব্যবহার করে বিভিন্ন ভ্যালু প্যারামিটার হিসাবে টেস্টে প্রদান করা হয়েছে, এবং @RepeatedTest ব্যবহার করে একই টেস্টের পুনরাবৃত্তি 3 বার করা হয়েছে।
৩. @RepeatedTest এবং Display Name
JUnit 5 এ আপনি @RepeatedTest এর সাথে @DisplayName অ্যানোটেশন ব্যবহার করে টেস্টের নাম কাস্টমাইজ করতে পারেন।
উদাহরণ:
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.RepeatedTest;
public class MyTest {
@RepeatedTest(3)
@DisplayName("Test repeated with custom display name")
void repeatedTest() {
System.out.println("Running repeated test with custom display name");
}
}
এখানে, @DisplayName টেস্টের নাম কাস্টমাইজ করা হয়েছে যাতে টেস্ট রান হওয়ার সময় এটি বুঝতে সুবিধা হয়।
৪. @RepeatedTest এবং TestInfo ব্যবহার
JUnit 5 এর TestInfo এর মাধ্যমে আপনি টেস্টের কিছু মেটাডেটা যেমন নাম, পুনরাবৃত্তির সংখ্যা ইত্যাদি সহজেই জানতে পারেন।
উদাহরণ:
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.TestInfo;
public class MyTest {
@RepeatedTest(3)
void repeatedTest(TestInfo testInfo) {
System.out.println(testInfo.getDisplayName() + " is running");
}
}
এখানে, TestInfo ব্যবহার করে আপনি টেস্টের নাম এবং অন্যান্য তথ্য নিতে পারবেন।
৫. @RepeatedTest এবং Dynamic Test
JUnit 5 এ dynamic tests চালানোর সময়, @RepeatedTest এবং DynamicTest একসাথে ব্যবহার করা যায়।
উদাহরণ:
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import org.junit.jupiter.api.DynamicTest.Stream;
import java.util.stream.Stream;
public class MyTest {
@TestFactory
Stream<DynamicTest> dynamicTests() {
return Stream.of(
DynamicTest.dynamicTest("Test 1", () -> {
System.out.println("Running dynamic test 1");
}),
DynamicTest.dynamicTest("Test 2", () -> {
System.out.println("Running dynamic test 2");
})
);
}
@RepeatedTest(2)
void repeatedTest() {
System.out.println("Repeated test running");
}
}
এখানে, @RepeatedTest এবং DynamicTest একসাথে ব্যবহৃত হয়েছে, এবং Stream<DynamicTest> এর মাধ্যমে ডাইনামিক টেস্ট চালানো হয়েছে।
৬. @RepeatedTest এর সুবিধা
- Reliability Testing: একাধিক বার একই টেস্ট চালানোর মাধ্যমে টেস্টের নির্ভরযোগ্যতা যাচাই করা যায়।
- Performance Testing: একাধিক বার টেস্ট চালিয়ে কনকারেন্ট এবং লোড টেস্ট করা যায়।
- Consistency: টেস্টটি বিভিন্ন সময় চালিয়ে একই ফলাফল আসছে কিনা, সেটি যাচাই করা সম্ভব।
সারাংশ
JUnit 5 এর @RepeatedTest অ্যানোটেশন ব্যবহার করে একই টেস্ট একাধিক বার চালানো যায়। এটি ইউনিট টেস্টে পুনরাবৃত্তি চালানোর জন্য কার্যকরী একটি টুল। আপনি এটি ব্যবহার করে বিভিন্ন reliability এবং performance testing করতে পারেন, এবং এর সাথে parameterized tests, custom display names, dynamic tests, এবং TestInfo এর মতো অন্যান্য সুবিধাও উপভোগ করতে পারবেন।
Read more