JUnit হলো একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় ইউনিট টেস্টিং করতে ব্যবহৃত হয়। JUnit টেস্টিং করার জন্য বিভিন্ন এনোটেশন ব্যবহার করা হয়, যার মধ্যে @Test হলো সবচেয়ে গুরুত্বপূর্ণ। এই এনোটেশনটি ব্যবহৃত হয় একটি মেথডে, যা সিস্টেমের যেকোনো অংশের কার্যকারিতা পরীক্ষা করতে ব্যবহৃত হয়।
১. @Test এনোটেশন এর ধারণা
@Test এনোটেশন একটি মেথডকে টেস্ট মেথড হিসেবে চিহ্নিত করে। যখন JUnit রান করে, এটি @Test দিয়ে চিহ্নিত মেথডগুলোকে টেস্ট কেস হিসেবে স্বীকৃতি দেয় এবং সেগুলি পরীক্ষা করে।
২. @Test এনোটেশন এর মূল বৈশিষ্ট্য:
- টেস্ট মেথড চিহ্নিত করা: JUnit এর মাধ্যমে একটি মেথডকে টেস্ট করার জন্য
@Testএনোটেশন ব্যবহার করা হয়। - Test Case Execution: যখন JUnit রান হয়, এটি
@Testদিয়ে চিহ্নিত মেথডগুলোকে একে একে চালায়। - No Return Type:
@Testমেথডের কোনো রিটার্ন টাইপ থাকে না। এটি সাধারণতvoidটাইপ হয়ে থাকে। - Exception Handling: আপনি চাইলে টেস্ট মেথডে Exception আশা করতে পারেন, এবং
@Testএর সাথে এটি চিহ্নিত করতে পারেন।
৩. @Test এনোটেশন এর সাধারণ ব্যবহার
উদাহরণ:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CalculatorTest {
@Test
public void testAddition() {
int result = 2 + 3;
assertEquals(5, result);
}
@Test
public void testSubtraction() {
int result = 5 - 3;
assertEquals(2, result);
}
}
এখানে:
@Testএনোটেশন দিয়ে দুটি মেথডtestAdditionএবংtestSubtractionচিহ্নিত করা হয়েছে।- assertEquals() মেথডটি ব্যবহার করা হয়েছে যা আশা করা আউটপুট এবং আসল আউটপুটের মধ্যে মিল যাচাই করে।
৪. @Test এর সাথে Exception Testing
JUnit আপনাকে @Test মেথডে exception আশা করার অনুমতি দেয়। আপনি যদি কোনো বিশেষ ত্রুটি (exception) প্রত্যাশা করেন, তবে এটি @Test(expected = Exception.class) আর্গুমেন্ট দিয়ে চিহ্নিত করতে পারেন।
উদাহরণ:
import org.junit.Test;
public class CalculatorTest {
@Test(expected = ArithmeticException.class)
public void testDivisionByZero() {
int result = 1 / 0; // This will throw ArithmeticException
}
}
এখানে, @Test(expected = ArithmeticException.class) এর মাধ্যমে বলা হচ্ছে যে, testDivisionByZero মেথডটি ArithmeticException ছুড়ে দেবে এবং এটি পরীক্ষার জন্য আশা করা হচ্ছে।
৫. @Test এনোটেশন এর সাথে Time-out নির্ধারণ
JUnit এ আপনি একটি টেস্টের জন্য একটি time-out নির্ধারণ করতে পারেন, যা নির্দিষ্ট সময়ের মধ্যে টেস্টটি সম্পন্ন না হলে, তা ফেইল হয়ে যাবে।
উদাহরণ:
import org.junit.Test;
public class CalculatorTest {
@Test(timeout = 1000) // Time-out set to 1000 milliseconds (1 second)
public void testLongRunningOperation() {
// Code that might take a long time to execute
while(true) {
// Simulating long operation
}
}
}
এখানে, @Test(timeout = 1000) দ্বারা নির্দিষ্ট করা হয়েছে যে, এই টেস্টটি 1 সেকেন্ডের মধ্যে সম্পন্ন হওয়া উচিত, না হলে এটি একটি time-out ত্রুটি হিসাবে বিবেচিত হবে।
৬. @Test এনোটেশন এর সাথে Parameters ব্যবহার
JUnit 4 এ আপনি @Test এনোটেশনের সাথে parameters ব্যবহার করতে পারেন। এতে একই টেস্ট মেথড বিভিন্ন ইনপুটের জন্য একাধিকবার রান করতে পারে।
উদাহরণ (JUnit 4):
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class CalculatorTest {
private int a;
private int b;
private int expected;
public CalculatorTest(int a, int b, int expected) {
this.a = a;
this.b = b;
this.expected = expected;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 2, 3, 5 },
{ 4, 5, 9 },
{ 6, 7, 13 }
});
}
@Test
public void testAddition() {
assertEquals(expected, a + b);
}
}
এখানে:
@RunWith(Parameterized.class)এবং@Parameterized.Parametersব্যবহার করা হয়েছে যাতে একাধিক টেস্ট ইনপুট প্রদান করা যায় এবং একই টেস্ট মেথডটি একাধিক বার চালানো যায়।
৭. @Test এর মাধ্যমে Test Suites তৈরি
JUnit এর মাধ্যমে আপনি টেস্ট স্যুটও তৈরি করতে পারেন, যেখানে একাধিক টেস্ট ক্লাস একত্রিত করা হয়। এটি কার্যকর যখন আপনাকে একাধিক টেস্ট একসাথে চালাতে হয়।
উদাহরণ:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, OtherTest.class })
public class AllTests {
}
এখানে, @Suite.SuiteClasses ব্যবহার করে একাধিক টেস্ট ক্লাস যুক্ত করা হয়েছে যা একসাথে চালানো হবে।
সারাংশ
JUnit @Test এনোটেশন ব্যবহার করে আপনি সহজেই আপনার Java কোডের ইউনিট টেস্ট তৈরি করতে পারেন। এটি টেস্ট মেথড চিহ্নিত করতে ব্যবহৃত হয় এবং JUnit আপনাকে টেস্টের কার্যকারিতা পরীক্ষা করতে সহায়তা করে। Exception Handling, Time-out, Parameterized Tests এবং Test Suites সহ বিভিন্ন ফিচার প্রদান করে, যা JUnit-কে শক্তিশালী এবং কার্যকরী টেস্টিং ফ্রেমওয়ার্কে পরিণত করে।
Read more