EasyMock-এ Method Calls এর Verification কী?
Method Calls Verification হল একটি প্রক্রিয়া যার মাধ্যমে নিশ্চিত করা হয় যে একটি মক অবজেক্টের মেথডগুলি সঠিকভাবে কল করা হয়েছে কিনা এবং পূর্বনির্ধারিত প্রত্যাশা অনুযায়ী সেগুলির আচরণ ঠিক ছিল। EasyMock-এ verify() মেথড ব্যবহৃত হয় মক অবজেক্টের মেথড কলগুলো যাচাই করতে, এবং এটি নিশ্চিত করতে সাহায্য করে যে প্রত্যাশিত মেথড কল সঠিকভাবে এবং নির্দিষ্ট সংখ্যায় হয়েছে।
কেন Method Calls Verification প্রয়োজন?
- Correctness: মক অবজেক্টের মেথড কলগুলো সঠিকভাবে হয়েছে কিনা তা নিশ্চিত করা।
- Behavior Verification: মক অবজেক্টের প্রত্যাশিত আচরণ (expectations) সঠিকভাবে কার্যকরী হয়েছে কিনা তা যাচাই করা।
- 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
}
}
ব্যাখ্যা:
- EasyMock.createMock(Service.class): এটি
Serviceইন্টারফেসের একটি মক অবজেক্ট তৈরি করেছে। - EasyMock.expect(): এটি মক অবজেক্টের জন্য প্রত্যাশা সেট করেছে, যেখানে
greet("John")এবংfarewell("John")মেথডের প্রত্যাশিত ফলাফল নির্ধারণ করা হয়েছে। - EasyMock.replay(): এটি মক অবজেক্টে প্রত্যাশা সক্রিয় করেছে, যার পর মক অবজেক্টটি টেস্ট করার জন্য প্রস্তুত হয়েছে।
- 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:
- EasyMock.verify():
- এটি যাচাই করে যে সকল প্রত্যাশিত মেথড কল সঠিকভাবে মক অবজেক্টে হয়েছে কিনা।
- যদি কোনো মেথড কল প্রত্যাশিত না হয় বা নির্ধারিত হয়, তবে এটি ত্রুটি দেখাবে।
- EasyMock.verify(Service.class):
- verify() মেথড শুধুমাত্র মক অবজেক্টের জন্য কল করা উচিত এবং এটি নিশ্চিত করে যে প্রত্যাশিত মেথড কল সঠিকভাবে হয়েছে।
- EasyMock.times():
- আপনি মক অবজেক্টের মেথড কলের সংখ্যাও নির্ধারণ করতে পারেন, যেমন
andReturn()এর পরEasyMock.times(2)ব্যবহার করে মেথডটি ২ বার কল হওয়া প্রত্যাশা করতে পারেন।
- আপনি মক অবজেক্টের মেথড কলের সংখ্যাও নির্ধারণ করতে পারেন, যেমন
সারাংশ
EasyMock.verify() মেথডটি একটি অত্যন্ত গুরুত্বপূর্ণ টেস্টিং টুল যা নিশ্চিত করে যে মক অবজেক্টের মেথডগুলো সঠিকভাবে এবং নির্দিষ্ট সংখ্যায় কল হয়েছে কিনা। এটি unit tests-এ method calls verification করতে ব্যবহৃত হয়। verify() মেথডের সাহায্যে আপনি নিশ্চিত করতে পারবেন যে মক অবজেক্টের আচরণ সঠিকভাবে কাজ করছে এবং এটি আপনার expectations অনুযায়ী ব্যবহার করা হয়েছে।
Read more