Practical উদাহরণ: JUnit 5 এর জন্য Legacy Code Migration

JUnit 4 এবং JUnit 5 এর মধ্যে পার্থক্য - জেইউনিট (JUnit) - Java Technologies

246

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

এই গাইডে, আমরা JUnit 5 তে Legacy JUnit 4 Code Migration সম্পর্কে বিস্তারিতভাবে আলোচনা করব। এতে আমরা দেখব কীভাবে আপনার পুরানো JUnit 4 টেস্ট কেসগুলোকে JUnit 5 ফ্রেমওয়ার্কে রূপান্তর করবেন এবং এই প্রক্রিয়ায় কী কী পরিবর্তন প্রয়োজন।


১. JUnit 4 এবং JUnit 5 এর মধ্যে পার্থক্য

JUnit 4 এবং JUnit 5 এর মধ্যে কিছু মূল পার্থক্য রয়েছে। JUnit 5 অনেক নতুন বৈশিষ্ট্য এবং উন্নতি নিয়ে এসেছে, যেমন:

  • JUnit 5 এর মধ্যে JUnit Platform, JUnit Jupiter, এবং JUnit Vintage তিনটি আলাদা মডিউল থাকে।
  • JUnit Jupiter নতুন অ্যানোটেশন এবং API প্রদান করে, যা JUnit 5 এর টেস্ট রানের জন্য ব্যবহৃত হয়।
  • JUnit Vintage পুরনো JUnit সংস্করণ, যেমন JUnit 3 এবং JUnit 4 টেস্টগুলিকে সমর্থন করে।

২. JUnit 4 থেকে JUnit 5 তে মাইগ্রেশন কিভাবে করবেন?

২.১ JUnit 4 এর টেস্ট কেস উদাহরণ (Legacy Code)

ধরা যাক আপনার একটি JUnit 4 টেস্ট কেস রয়েছে:

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
}

এখানে, JUnit 4 এর @Test অ্যানোটেশন ব্যবহার করা হয়েছে এবং assertEquals মেথডের মাধ্যমে টেস্ট ফলাফল যাচাই করা হচ্ছে।

২.২ JUnit 5 এ মাইগ্রেট করা

JUnit 5 এ কিছু পরিবর্তন হয়েছে, যেমন নতুন অ্যানোটেশন এবং assert মেথডের ব্যবহারের স্টাইল। JUnit 5 এ @Test অ্যানোটেশন, Assertions ক্লাস এবং @BeforeAll, @AfterAll, @BeforeEach, @AfterEach এর মতো নতুন অ্যানোটেশন যুক্ত হয়েছে।

JUnit 5 এর টেস্ট কেস:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
}

এখানে:

  • @Test অ্যানোটেশনটি এখন org.junit.jupiter.api.Test থেকে আনা হয়।
  • assertEquals মেথডটি org.junit.jupiter.api.Assertions থেকে এসেছে।

২.৩ JUnit 5 এর নতুন ফিচার এবং অ্যানোটেশন

  1. @BeforeEach এবং @AfterEach:
    • JUnit 5 তে, প্রতিটি টেস্ট মেথডের আগে এবং পরে চলার জন্য @BeforeEach এবং @AfterEach অ্যানোটেশন ব্যবহার করা হয়।
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

public class CalculatorTest {

    @BeforeEach
    public void setup() {
        // Setup code for each test
    }

    @AfterEach
    public void cleanup() {
        // Cleanup code after each test
    }

    @Test
    public void testAdd() {
        // Test code
    }
}
  1. @BeforeAll এবং @AfterAll:
    • @BeforeAll এবং @AfterAll ব্যবহৃত হয় টেস্ট ক্লাসে একবার চালানোর জন্য। @BeforeAll ক্লাস লেভেল ফাংশনগুলোর আগে এবং @AfterAll ফাংশনগুলোর পরে চালানো হয়।
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.AfterAll;

public class CalculatorTest {

    @BeforeAll
    static void initAll() {
        // Setup before all tests
    }

    @AfterAll
    static void tearDownAll() {
        // Cleanup after all tests
    }

    @Test
    void testAdd() {
        // Test method
    }
}

২.৪ JUnit 4 থেকে JUnit 5 তে Dependency পরিবর্তন

JUnit 5 ব্যবহার করতে হলে আপনাকে কিছু নতুন ডিপেনডেন্সি যোগ করতে হবে। নিচে Maven ডিপেনডেন্সি উদাহরণ দেয়া হলো:

<dependencies>
    <!-- JUnit 5 Dependency -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>

    <!-- JUnit Vintage (for running legacy JUnit 4 tests) -->
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>5.7.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

এখানে JUnit Jupiter (JUnit 5) এবং JUnit Vintage (JUnit 4 এর জন্য) ডিপেনডেন্সি যুক্ত করা হয়েছে।

২.৫ JUnit 5 তে Extension এবং Parameterized Tests

JUnit 5 তে extension এবং parameterized tests এর সমর্থন রয়েছে। আপনি @ParameterizedTest এবং @ValueSource ব্যবহার করে একাধিক ইনপুটের সাথে টেস্ট চালাতে পারেন।

import org.junit.jupiter.api.ParameterizedTest;
import org.junit.jupiter.api.ValueSource;

public class CalculatorTest {

    @ParameterizedTest
    @ValueSource(ints = { 1, 2, 3 })
    void testAdd(int number) {
        Calculator calculator = new Calculator();
        assertEquals(number + 1, calculator.add(number, 1));
    }
}

এখানে, @ParameterizedTest ব্যবহার করে একাধিক ইনপুটের সাথে টেস্ট করা হয়েছে।


৩. JUnit 4 থেকে JUnit 5 তে মাইগ্রেশন করার জন্য টিপস

  1. Test Naming: JUnit 5 এ টেস্ট মেথডের নামের জন্য CamelCase এবং Meaningful Names ব্যবহার করার পরামর্শ দেওয়া হয়।
  2. Annotations Update: @Before, @After, @BeforeClass, @AfterClass এর পরিবর্তে @BeforeEach, @AfterEach, @BeforeAll, @AfterAll ব্যবহার করুন।
  3. Assertions: JUnit 5 এ assert মেথডগুলির মধ্যে কিছু পরিবর্তন এসেছে। যেমন assertTrue এবং assertFalse সেগুলি Assertions ক্লাসে রয়েছে।

সারাংশ

JUnit 5 এর সাহায্যে আপনি সহজেই JUnit 4 এর পুরানো টেস্ট কেসগুলোকে নতুন এবং উন্নত টেস্ট কেসে রূপান্তর করতে পারবেন। JUnit 5 অনেক নতুন ফিচার, অ্যানোটেশন এবং উন্নত পারফরম্যান্স প্রদান করে, যেমন @BeforeEach, @AfterEach, @ParameterizedTest, @ValueSource, এবং @BeforeAll, @AfterAll। এই টিউটোরিয়ালে আমরা দেখেছি কিভাবে JUnit 4 থেকে JUnit 5 তে মাইগ্রেট করা যায় এবং এই প্রক্রিয়ায় কী কী পরিবর্তন করতে হয়।


Content added By
Promotion

Are you sure to start over?

Loading...