JUnit 5 হল JUnit ফ্রেমওয়ার্কের নতুন সংস্করণ, যা জেইউনিট টেস্টিংয়ের আধুনিক এবং উন্নত ফিচার সরবরাহ করে। JUnit 5 মূলত তিনটি অংশে বিভক্ত:
- JUnit Platform: এটি টেস্ট রানার এবং টেস্টিং প্ল্যাটফর্ম।
- JUnit Jupiter: এটি JUnit 5 এর টেস্ট API এবং লাইফসাইকেল।
- JUnit Vintage: এটি JUnit 3 এবং JUnit 4 এর টেস্টগুলির সাথে সামঞ্জস্যপূর্ণ।
JUnit 5 ব্যবহার করার জন্য আপনাকে আপনার প্রোজেক্টে কিছু নির্দিষ্ট ডিপেনডেন্সি কনফিগার করতে হবে, যা JUnit 5 API এবং রানার (runner) সাপোর্ট করবে।
এই গাইডে, আমরা JUnit 5 এর জন্য প্রয়োজনীয় ডিপেনডেন্সি কনফিগারেশন দেখব, যা Maven এবং Gradle উভয় প্রোজেক্টেই কার্যকরী হবে।
১. Maven এর জন্য JUnit 5 ডিপেনডেন্সি কনফিগারেশন
আপনি যদি Maven ব্যবহার করেন, তবে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করতে হবে।
Maven Dependency:
<dependencies>
<!-- JUnit 5 API Dependency -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version> <!-- Use the latest version -->
<scope>test</scope>
</dependency>
<!-- JUnit 5 Engine (for running the tests) -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.2</version> <!-- Use the latest version -->
<scope>test</scope>
</dependency>
<!-- JUnit 5 Params (if you use parameterized tests) -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.7.2</version> <!-- Use the latest version -->
<scope>test</scope>
</dependency>
<!-- JUnit Vintage (for backward compatibility with JUnit 3 and 4) -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven Surefire Plugin Configuration:
JUnit 5 টেস্ট রান করার জন্য Maven Surefire Plugin কনফিগার করা দরকার। এটি মাভেন বিল্ডের সময় টেস্ট চালানোর জন্য ব্যবহৃত হয়। আপনার pom.xml ফাইলে নিচের কনফিগারেশনটি যোগ করুন:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<useModulePath>false</useModulePath> <!-- If using Java 9+ -->
</configuration>
</plugin>
</plugins>
</build>
এটি নিশ্চিত করবে যে Maven JUnit 5 টেস্ট সঠিকভাবে রান করবে।
২. Gradle এর জন্য JUnit 5 ডিপেনডেন্সি কনফিগারেশন
আপনি যদি Gradle ব্যবহার করেন, তবে build.gradle ফাইলে নিম্নলিখিত ডিপেনডেন্সি যুক্ত করতে হবে।
Gradle Dependency:
dependencies {
// JUnit 5 API Dependency
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2' // Latest version
// JUnit 5 Engine (for running the tests)
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.2' // Latest version
// JUnit 5 Params (if you use parameterized tests)
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.2' // Latest version
}
Gradle Test Task Configuration:
Gradle ব্যবহার করে JUnit 5 টেস্ট রান করার জন্য আপনার build.gradle ফাইলে test টাস্ক কনফিগার করতে হবে:
test {
useJUnitPlatform() // Enable JUnit 5
}
এটি JUnit Platform সক্রিয় করে, যা Gradle কে JUnit 5 টেস্ট রান করতে সক্ষম করবে।
৩. JUnit 5 এর বৈশিষ্ট্য এবং নতুন ফিচার
JUnit 5 অনেক নতুন বৈশিষ্ট্য এবং সুবিধা নিয়ে এসেছে যা আগের সংস্করণে ছিল না। এর মধ্যে কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- Annotations: JUnit 5-এ নতুন অ্যানোটেশন রয়েছে যেমন
@Test,@BeforeEach,@AfterEach,@BeforeAll,@AfterAllএবং@DisplayName। এগুলি টেস্টের লাইফসাইকেল এবং কাস্টম ডিসপ্লে নাম সেট করার জন্য ব্যবহৃত হয়। - Parameterised Tests: JUnit 5-এ parameterized tests চালানোর সুবিধা রয়েছে, যার মাধ্যমে একাধিক ইনপুট দিয়ে টেস্ট চালানো যায়।
- Dynamic Tests:
@TestFactoryঅ্যানোটেশন ব্যবহার করে ডায়নামিক টেস্ট তৈরি করা যায়। - Test Interfaces and Inheritance: JUnit 5 এখন interfaces এবং inheritance সমর্থন করে, যা কোড রিইউজে সহায়ক।
- Nested Tests:
@Nestedঅ্যানোটেশন ব্যবহার করে টেস্টের ভিতরে আরেকটি টেস্ট ক্লাস ডিফাইন করা যায়। - Test Execution Order: JUnit 5-এ টেস্টের এক্সিকিউশন অর্ডার কাস্টমাইজ করা যায়।
৪. JUnit 5 টেস্ট উদাহরণ
এখানে JUnit 5 ব্যবহার করে একটি সাধারণ টেস্ট উদাহরণ দেওয়া হলো।
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
void testAdd() {
int result = 2 + 3;
assertEquals(5, result, "The addition result should be 5");
}
}
এখানে @Test অ্যানোটেশন দ্বারা টেস্ট মেথড চিহ্নিত করা হয়েছে এবং assertEquals ব্যবহৃত হয়েছে টেস্টের ফলাফল যাচাই করতে।
৫. JUnit 5 এ Parameterized Test উদাহরণ
JUnit 5-এ Parameterized Tests এর মাধ্যমে একাধিক ইনপুট দিয়ে একটি টেস্ট মেথড চালানো যায়।
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class StringTest {
@ParameterizedTest
@ValueSource(strings = {"apple", "banana", "cherry"})
void testStringLengthGreaterThanZero(String fruit) {
assertTrue(fruit.length() > 0);
}
}
এখানে @ParameterizedTest এবং @ValueSource ব্যবহার করে বিভিন্ন স্ট্রিংয়ের উপর একাধিক টেস্ট চালানো হচ্ছে।
সারাংশ
JUnit 5 হল JUnit ফ্রেমওয়ার্কের আধুনিক এবং উন্নত সংস্করণ, যা নতুন অ্যানোটেশন এবং ফিচার সরবরাহ করে। JUnit 5 ব্যবহারের জন্য Maven বা Gradle প্রোজেক্টে সঠিক ডিপেনডেন্সি এবং কনফিগারেশন যোগ করা প্রয়োজন। এই কনফিগারেশন সঠিকভাবে সেটআপ করলে আপনি JUnit 5 এর সমস্ত নতুন ফিচার এবং টেস্টিং সুবিধা উপভোগ করতে পারবেন।
Read more