Method Calls এর জন্য Verification করা

Mock Object Verification - ইজিমক (EasyMock) - Java Technologies

365

EasyMock-এ Method Calls এর Verification কী?

Method Calls Verification হল একটি প্রক্রিয়া যার মাধ্যমে নিশ্চিত করা হয় যে একটি মক অবজেক্টের মেথডগুলি সঠিকভাবে কল করা হয়েছে কিনা এবং পূর্বনির্ধারিত প্রত্যাশা অনুযায়ী সেগুলির আচরণ ঠিক ছিল। EasyMock-এ verify() মেথড ব্যবহৃত হয় মক অবজেক্টের মেথড কলগুলো যাচাই করতে, এবং এটি নিশ্চিত করতে সাহায্য করে যে প্রত্যাশিত মেথড কল সঠিকভাবে এবং নির্দিষ্ট সংখ্যায় হয়েছে।

কেন Method Calls Verification প্রয়োজন?

  1. Correctness: মক অবজেক্টের মেথড কলগুলো সঠিকভাবে হয়েছে কিনা তা নিশ্চিত করা।
  2. Behavior Verification: মক অবজেক্টের প্রত্যাশিত আচরণ (expectations) সঠিকভাবে কার্যকরী হয়েছে কিনা তা যাচাই করা।
  3. Test Coverage: মেথড কলগুলো পরীক্ষা করে নিশ্চিত করা যে কোডের সমস্ত প্রয়োজনীয় অংশ সঠিকভাবে পরীক্ষা করা হয়েছে।

EasyMock-এ Method Calls Verification কীভাবে করবেন?

Step 1: Expectation Setting

প্রথমে, আপনাকে expect() মেথড ব্যবহার করে মক অবজেক্টের প্রত্যাশা সেট করতে হবে। এর মাধ্যমে আপনি কোন মেথড কল হবে এবং তার প্রত্যাশিত ফলাফল কী হবে, তা নির্ধারণ করতে পারেন।

Step 2: Replay Mode

replay() মেথড ব্যবহারের মাধ্যমে আপনি মক অবজেক্টে পূর্বনির্ধারিত প্রত্যাশাগুলি সক্রিয় করবেন। এর পর মক অবজেক্টটি টেস্টিংয়ের জন্য প্রস্তুত হবে।

Step 3: Verification

verify() মেথড ব্যবহার করে, আপনি যাচাই করতে পারেন যে প্রত্যাশিত মেথডগুলো সঠিকভাবে কল করা হয়েছে কিনা।


EasyMock Example: Method Calls Verification

ধরা যাক, একটি Service ইন্টারফেসের greet() এবং farewell() মেথড রয়েছে এবং আমরা যাচাই করতে চাই যে এই মেথডগুলো সঠিকভাবে কল হয়েছে কিনা।

Step 1: Service Interface

public interface Service {
    String greet(String name);
    String farewell(String name);
}

Step 2: Test Class

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

public class EasyMockVerificationTest {

    @Test
    public void testMethodCallsVerification() {
        // Create a mock of the Service interface
        Service serviceMock = EasyMock.createMock(Service.class);

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

        // Activate the mock
        EasyMock.replay(serviceMock);

        // Test the mock behavior
        String greetResult = serviceMock.greet("John");
        String farewellResult = serviceMock.farewell("John");

        // Verifying the results
        assertEquals("Hello, John!", greetResult);
        assertEquals("Goodbye, John!", farewellResult);

        // Verify that the methods were called as expected
        EasyMock.verify(serviceMock);  // This verifies that the mock methods were called
    }
}

ব্যাখ্যা:

  1. EasyMock.createMock(Service.class): এটি Service ইন্টারফেসের একটি মক অবজেক্ট তৈরি করেছে।
  2. EasyMock.expect(): এটি মক অবজেক্টের জন্য প্রত্যাশা সেট করেছে, যেখানে greet("John") এবং farewell("John") মেথডের প্রত্যাশিত ফলাফল নির্ধারণ করা হয়েছে।
  3. EasyMock.replay(): এটি মক অবজেক্টে প্রত্যাশা সক্রিয় করেছে, যার পর মক অবজেক্টটি টেস্ট করার জন্য প্রস্তুত হয়েছে।
  4. EasyMock.verify(): এটি যাচাই করেছে যে প্রত্যাশিত মেথড কলগুলি সঠিকভাবে মক অবজেক্টে হয়েছে কিনা।

Verification Failure Example

ধরা যাক, আপনি greet() মেথডটি কল করেছেন, তবে farewell() মেথডটি কল করেননি। verify() মেথডটি তখন ত্রুটি দেখাবে।

@Test
public void testMethodCallsVerificationFailure() {
    // Create a mock of the Service interface
    Service serviceMock = EasyMock.createMock(Service.class);

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

    // Activate the mock
    EasyMock.replay(serviceMock);

    // Test the mock behavior (only greet() method is called)
    String greetResult = serviceMock.greet("John");

    // Verifying the result
    assertEquals("Hello, John!", greetResult);

    // Verify that the methods were called as expected
    EasyMock.verify(serviceMock);  // This will fail since farewell() was not called
}

এই ক্ষেত্রে, verify() মেথডটি UnexpectedMethodCallException ত্রুটি তৈরি করবে, কারণ farewell() মেথডটি প্রত্যাশিত হলেও কল করা হয়নি।


Verification Methods:

  1. EasyMock.verify():
    • এটি যাচাই করে যে সকল প্রত্যাশিত মেথড কল সঠিকভাবে মক অবজেক্টে হয়েছে কিনা।
    • যদি কোনো মেথড কল প্রত্যাশিত না হয় বা নির্ধারিত হয়, তবে এটি ত্রুটি দেখাবে।
  2. EasyMock.verify(Service.class):
    • verify() মেথড শুধুমাত্র মক অবজেক্টের জন্য কল করা উচিত এবং এটি নিশ্চিত করে যে প্রত্যাশিত মেথড কল সঠিকভাবে হয়েছে।
  3. EasyMock.times():
    • আপনি মক অবজেক্টের মেথড কলের সংখ্যাও নির্ধারণ করতে পারেন, যেমন andReturn() এর পর EasyMock.times(2) ব্যবহার করে মেথডটি ২ বার কল হওয়া প্রত্যাশা করতে পারেন।

সারাংশ

EasyMock.verify() মেথডটি একটি অত্যন্ত গুরুত্বপূর্ণ টেস্টিং টুল যা নিশ্চিত করে যে মক অবজেক্টের মেথডগুলো সঠিকভাবে এবং নির্দিষ্ট সংখ্যায় কল হয়েছে কিনা। এটি unit tests-এ method calls verification করতে ব্যবহৃত হয়। verify() মেথডের সাহায্যে আপনি নিশ্চিত করতে পারবেন যে মক অবজেক্টের আচরণ সঠিকভাবে কাজ করছে এবং এটি আপনার expectations অনুযায়ী ব্যবহার করা হয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...