@Before এবং @After এনোটেশন ব্যবহার

JUnit এর সাথে EasyMock Integration - ইজিমক (EasyMock) - Java Technologies

361

JUnit-এর @Before এবং @After এনোটেশন

JUnit টেস্টিং ফ্রেমওয়ার্কে, @Before এবং @After এনোটেশন দুটি খুবই গুরুত্বপূর্ণ টেস্ট লাইফ সাইকেল মেথড চিহ্নিত করতে ব্যবহৃত হয়। এগুলি নিশ্চিত করে যে টেস্টের আগের এবং পরের প্রস্তুতি এবং পরিস্কারের কাজগুলি সঠিকভাবে করা হবে।

  1. @Before: এটি টেস্টের আগে রান হয়, যাতে আপনি টেস্ট রান করার জন্য প্রাথমিক অবস্থান সেটআপ করতে পারেন। সাধারণত, টেস্টের জন্য মক অবজেক্ট তৈরি, ডাটাবেস কানেকশন সেট করা ইত্যাদি কাজ এই মেথডে করা হয়।
  2. @After: এটি টেস্টের পরে রান হয়, যাতে আপনি টেস্টের পর সম্পন্ন হওয়ার পর পরিস্কার কাজ করতে পারেন, যেমন মক অবজেক্টগুলো ক্লিন আপ করা, ডাটাবেস কানেকশন বন্ধ করা ইত্যাদি।

EasyMock-এর সাথে @Before এবং @After ব্যবহার

EasyMock-এ @Before এবং @After এনোটেশন ব্যবহার করলে আপনি মক অবজেক্টগুলির জন্য টেস্ট শুরুর আগে তাদের প্রস্তুত করতে পারেন এবং টেস্ট শেষ হওয়ার পর সেগুলি সঠিকভাবে পরিস্কার করতে পারেন।

Example: EasyMock with @Before and @After

ধরা যাক, আমাদের একটি Service ক্লাস আছে যার মধ্যে দুটি মেথড greet(String name) এবং farewell(String name) রয়েছে। আমরা EasyMock ব্যবহার করে এই মেথডগুলির জন্য টেস্ট লিখব এবং @Before এবং @After এনোটেশন ব্যবহার করব।

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.*;

public class EasyMockBeforeAfterTest {

    private Service serviceMock;

    // @Before: This method will run before each test method
    @Before
    public void setUp() {
        // Creating mock object using EasyMock
        serviceMock = EasyMock.createMock(Service.class);

        // Setting up expectations
        EasyMock.expect(serviceMock.greet("John")).andReturn("Hello, John!");
        EasyMock.expect(serviceMock.farewell("John")).andReturn("Goodbye, John!");

        // Activating the mock
        EasyMock.replay(serviceMock);
    }

    // @Test: Test the behavior of greet and farewell methods
    @Test
    public void testServiceMethods() {
        // Testing greet() method
        String greetResult = serviceMock.greet("John");
        assertEquals("Hello, John!", greetResult);

        // Testing farewell() method
        String farewellResult = serviceMock.farewell("John");
        assertEquals("Goodbye, John!", farewellResult);
    }

    // @After: This method will run after each test method
    @After
    public void tearDown() {
        // Verifying that the expected methods were called
        EasyMock.verify(serviceMock);
    }
}

ব্যাখ্যা:

  1. @Before setUp():
    • setUp() মেথডটি @Before এনোটেশন দ্বারা চিহ্নিত করা হয়েছে, তাই এটি প্রতিটি টেস্ট রান করার আগে কল হবে। এখানে মক অবজেক্ট তৈরি করা হচ্ছে এবং expect() মেথড দিয়ে প্রত্যাশা সেট করা হচ্ছে।
    • মক অবজেক্টে replay() মেথড ব্যবহার করে প্রত্যাশিত আচরণ সক্রিয় করা হচ্ছে।
  2. @Test testServiceMethods():
    • testServiceMethods() মেথডে, আমরা greet() এবং farewell() মেথডের জন্য টেস্ট করছি। প্রতিটি মেথডের জন্য ফলাফল যাচাই করা হচ্ছে।
  3. @After tearDown():
    • tearDown() মেথডটি @After এনোটেশন দ্বারা চিহ্নিত করা হয়েছে, তাই এটি প্রতিটি টেস্টের পর কল হবে। এখানে, আমরা verify() মেথড ব্যবহার করে যাচাই করছি যে প্রত্যাশিত মেথড কল হয়েছে কিনা।

@Before এবং @After এর ব্যবহার উদাহরণ

এই এনোটেশনগুলির ব্যবহার বিভিন্ন পরিস্থিতিতে টেস্টের জন্য সুবিধাজনক। উদাহরণস্বরূপ, আপনি যদি বিভিন্ন টেস্ট মেথডে মক অবজেক্টের জন্য পুনরায় কোড লিখতে না চান, তাহলে আপনি @Before এনোটেশন ব্যবহার করতে পারেন মক অবজেক্ট প্রস্তুত করার জন্য, এবং @After এনোটেশন ব্যবহার করতে পারেন পরিস্কার করার জন্য।

উদাহরণ: মক অবজেক্টের সাথে ডাটাবেস কানেকশন ব্যবহার

public class DatabaseServiceTest {

    private DatabaseService dbServiceMock;

    @Before
    public void setUp() {
        // Set up mock object for DatabaseService
        dbServiceMock = EasyMock.createMock(DatabaseService.class);

        // Set up expectations
        EasyMock.expect(dbServiceMock.connect()).andReturn(true);
        EasyMock.expect(dbServiceMock.query("SELECT * FROM users")).andReturn("User Data");

        // Activate the mock
        EasyMock.replay(dbServiceMock);
    }

    @Test
    public void testDatabaseConnection() {
        // Test the connect method
        boolean isConnected = dbServiceMock.connect();
        assertTrue(isConnected);
    }

    @Test
    public void testDatabaseQuery() {
        // Test the query method
        String result = dbServiceMock.query("SELECT * FROM users");
        assertEquals("User Data", result);
    }

    @After
    public void tearDown() {
        // Verifying the expected methods were called
        EasyMock.verify(dbServiceMock);
    }
}

এখানে, @Before এনোটেশন ব্যবহার করে DatabaseService এর মক অবজেক্ট প্রস্তুত করা হচ্ছে এবং @After এনোটেশন ব্যবহার করে নিশ্চিত করা হচ্ছে যে প্রত্যাশিত মেথডগুলো কল হয়েছে।


সারাংশ

  • @Before এবং @After এনোটেশনগুলি JUnit টেস্টিং ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ অংশ। এগুলি টেস্ট শুরুর আগে এবং পরে প্রস্তুতি এবং পরিস্কার কার্য সম্পাদন করতে ব্যবহৃত হয়।
  • EasyMock ব্যবহার করে, আপনি @Before এনোটেশনে মক অবজেক্ট তৈরি এবং @After এনোটেশনে মক অবজেক্টের ভেরিফিকেশন করতে পারেন।
  • এই এনোটেশনগুলি টেস্ট কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ এবং পাঠযোগ্যতা বৃদ্ধি করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...