Practical উদাহরণ: Parameterized Test এর মাধ্যমে Multiple Input Values পরীক্ষা করা

Parameterized Tests - জেইউনিট (JUnit) - Java Technologies

221

JUnit একটি জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় ইউনিট টেস্ট তৈরি এবং চালাতে ব্যবহৃত হয়। JUnit এর Parameterized Test একটি শক্তিশালী ফিচার যা আপনাকে একাধিক ইনপুট ভ্যালু দিয়ে একাধিক টেস্ট কেস চালানোর সুযোগ দেয়, এবং একই টেস্ট মেথডের মাধ্যমে একাধিক ডেটা পরীক্ষা করা যায়।

Parameterized Test-এর মাধ্যমে, আপনি একাধিক ভ্যালু দিয়ে টেস্ট চালাতে পারেন, যেটি বিশেষভাবে কার্যকর যখন আপনাকে একই টেস্টে বিভিন্ন ইনপুট দিয়ে একই লজিক পরীক্ষা করতে হয়।

এই টিউটোরিয়ালে, আমরা JUnit Parameterized Test এর সাহায্যে Multiple Input Values পরীক্ষা করার একটি উদাহরণ দেখাবো।


১. JUnit Parameterized Test কিভাবে কাজ করে?

JUnit Parameterized Test একটি স্পেশাল অ্যানোটেশন ব্যবহার করে, যেমন @RunWith(Parameterized.class) এবং @Parameters@RunWith(Parameterized.class) অ্যানোটেশন দিয়ে আমরা JUnit-কে জানিয়ে দেই যে, এই টেস্ট ক্লাসটি প্যারামিটারাইজড টেস্ট হিসেবে চলবে এবং @Parameters অ্যানোটেশন দ্বারা প্যারামিটারাইজড ইনপুট দেওয়া হয়।

২. JUnit Parameterized Test এর উদাহরণ

ধরা যাক, আমাদের একটি সিম্পল Calculator ক্লাস রয়েছে যা দুটি নাম্বারের যোগফল হিসাব করে:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

এখন, আমরা Calculator ক্লাসের add মেথডটি বিভিন্ন ইনপুট দিয়ে পরীক্ষা করতে চাই। আমরা JUnit Parameterized Test ব্যবহার করে একাধিক ইনপুটের মাধ্যমে এই মেথডটি পরীক্ষা করবো।

২.১ JUnit Parameterized Test Class Example

import org.junit.runner.RunWith;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;

@RunWith(Parameterized.class)
public class CalculatorTest {

    private int input1;
    private int input2;
    private int expectedResult;

    private Calculator calculator = new Calculator();

    // Constructor to initialize the input parameters
    public CalculatorTest(int input1, int input2, int expectedResult) {
        this.input1 = input1;
        this.input2 = input2;
        this.expectedResult = expectedResult;
    }

    // Test method
    @Test
    public void testAdd() {
        assertEquals(expectedResult, calculator.add(input1, input2));
    }

    // Parameters: Test cases with different inputs
    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {
            { 1, 1, 2 },    // Test case 1
            { 2, 3, 5 },    // Test case 2
            { 5, 5, 10 },   // Test case 3
            { -1, -1, -2 }  // Test case 4
        });
    }
}

২.২ ব্যাখ্যা:

  • @RunWith(Parameterized.class): এটি নির্দেশ করে যে এই টেস্ট ক্লাসটি প্যারামিটারাইজড টেস্ট হিসেবে চলবে।
  • @Parameters: এই অ্যানোটেশন প্যারামিটারযুক্ত ইনপুট সরবরাহ করে। এটি একটি কলেকশন (যেমন Arrays.asList) প্রদান করে, যাতে প্রত্যেক টেস্টের জন্য ইনপুট প্রদান করা হয়।
  • Constructor: প্যারামিটারized টেস্টের জন্য, আমাদের একটি কনস্ট্রাকটর তৈরি করতে হয় যা ইনপুট ভ্যালু গ্রহণ করে।
  • testAdd(): এটি মূল টেস্ট মেথড, যা Calculator ক্লাসের add() মেথডটিকে টেস্ট করে।

৩. JUnit Parameterized Test চালানো

এখন আপনি যখন এই টেস্ট ক্লাসটি চালাবেন, JUnit প্রতিটি প্যারামিটারাইজড ইনপুটের জন্য add মেথডটি পরীক্ষা করবে এবং প্রত্যাশিত ফলাফল চেক করবে।

এখানে চারটি আলাদা টেস্ট কেস থাকবে, যেগুলি একে একে চালানো হবে:

  • Test case 1: 1 + 1 = 2
  • Test case 2: 2 + 3 = 5
  • Test case 3: 5 + 5 = 10
  • Test case 4: -1 + -1 = -2

৩.১ Test Output Example:

Test run started
Test case 1: Passed
Test case 2: Passed
Test case 3: Passed
Test case 4: Passed
Test run finished

এখানে, প্রত্যেকটি ইনপুটের জন্য add মেথডটি পরীক্ষা করা হয়েছে এবং প্রত্যাশিত ফলাফল যথাযথভাবে পাওয়া গেছে।


৪. JUnit Parameterized Test এর সুবিধা

  1. Code Reusability: একই টেস্ট মেথডকে বিভিন্ন ইনপুট দিয়ে একাধিকবার চালানো যায়, ফলে কোড পুনরাবৃত্তি কমে।
  2. Simplified Test Cases: একাধিক ইনপুটের জন্য আলাদা টেস্ট মেথড তৈরি করার পরিবর্তে, একটি সাধারণ টেস্ট মেথডের মাধ্যমে সব ইনপুট পরীক্ষা করা যায়।
  3. Efficient Testing: বিভিন্ন ধরনের ইনপুট পরীক্ষা করা দ্রুত হয়ে ওঠে এবং একযোগে সবগুলো টেস্ট করা যায়।

৫. Conclusion

JUnit Parameterized Test একটি শক্তিশালী টুল যা আপনাকে একই টেস্ট মেথডের মাধ্যমে বিভিন্ন ইনপুট পরীক্ষা করতে সাহায্য করে। এটি কোডের পুনরাবৃত্তি কমায় এবং একটি সাধারণভাবে একাধিক টেস্ট কেস পরিচালনা করার সুযোগ দেয়। বিভিন্ন ধরনের ইনপুট ভ্যালুর সাথে টেস্ট চালানো, JUnit টেস্টিং প্রক্রিয়াকে আরও কার্যকরী এবং নির্ভুল করে তোলে।


Content added By
Promotion

Are you sure to start over?

Loading...