ইজিমক (EasyMock) হল একটি জনপ্রিয় Java লাইব্রেরি, যা ইউনিট টেস্টিংয়ের সময় এক্সটার্নাল ডিপেনডেন্সি (যেমন ডাটাবেস, ওয়েব সার্ভিস ইত্যাদি) মক করতে সহায়তা করে। মক (Mock) করা মানে হলো, এক্সটার্নাল ডিপেনডেন্সিগুলিকে এমনভাবে রিপ্লেস করা যাতে সেগুলি প্রকৃতপক্ষে কাজ না করে, কিন্তু টেস্টিংয়ের জন্য প্রয়োজনীয় আউটপুট প্রদান করে।
এখানে দেখানো হবে কীভাবে EasyMock ব্যবহার করে এক্সটার্নাল ডিপেনডেন্সি মক করা যায়।
EasyMock এর সাথে External Dependencies মক করার পদ্ধতি
প্রথমে ইজিমক লাইব্রেরি টেস্টিং প্রজেক্টে যোগ করতে হবে। এটি Maven অথবা Gradle এর মাধ্যমে করা যেতে পারে। Maven ব্যবহার করলে pom.xml এ নিচের ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>4.3</version>
<scope>test</scope>
</dependency>
এখন, চলুন একটি উদাহরণ দেখি যেখানে একটি এক্সটার্নাল ডিপেনডেন্সি মক করা হচ্ছে।
উদাহরণ: EasyMock দিয়ে মক করা
ধরা যাক, আমাদের একটি ক্লাস আছে যা ডাটাবেস সার্ভিস ব্যবহার করে এবং আমরা এই ক্লাসটির ইউনিট টেস্ট করতে চাই। এখানে আমরা ডাটাবেস সার্ভিসকে মক করব।
public class UserService {
private DatabaseService databaseService;
public UserService(DatabaseService databaseService) {
this.databaseService = databaseService;
}
public String getUserInfo(int userId) {
return databaseService.fetchUserInfo(userId);
}
}
এখন, DatabaseService মক করা হবে যাতে এটি প্রকৃত ডাটাবেসের সঙ্গে যোগাযোগ না করে, বরং পূর্বনির্ধারিত আউটপুট প্রদান করে।
import static org.easymock.EasyMock.*;
public class UserServiceTest {
@Test
public void testGetUserInfo() {
// মক অবজেক্ট তৈরি
DatabaseService mockDatabaseService = mock(DatabaseService.class);
// মক অবজেক্টের আচরণ নির্ধারণ
expect(mockDatabaseService.fetchUserInfo(1)).andReturn("User Info");
// মক অবজেক্ট প্রস্তুত করা
replay(mockDatabaseService);
// ইউজার সার্ভিস তৈরি করা
UserService userService = new UserService(mockDatabaseService);
// টেস্টিং করা
String result = userService.getUserInfo(1);
assertEquals("User Info", result);
// মক অবজেক্টের পুনরায় যাচাই করা
verify(mockDatabaseService);
}
}
কীভাবে কাজ করে EasyMock
- Mock Creation (মক অবজেক্ট তৈরি করা):
mock(DatabaseService.class)এর মাধ্যমেDatabaseServiceএর একটি মক অবজেক্ট তৈরি করা হয়। - Behavior Setup (আচরণ নির্ধারণ):
expect(...).andReturn(...)ব্যবহার করে মক অবজেক্টের আচরণ নির্ধারণ করা হয়। এখানে,fetchUserInfo(1)কল হলে এটি"User Info"রিটার্ন করবে। - Replay Mode (পুনরায় চালানো):
replay(mockDatabaseService)দিয়ে মক অবজেক্টের আচরণ প্রয়োগ করা হয়। - Verification (যাচাইকরণ): টেস্ট শেষে
verify(mockDatabaseService)দিয়ে নিশ্চিত করা হয় যে, মক অবজেক্টের নির্ধারিত আচরণটি ঠিকভাবে প্রয়োগ হয়েছে।
এইভাবে, EasyMock ব্যবহার করে সহজেই এক্সটার্নাল ডিপেনডেন্সি মক করা সম্ভব, যা ইউনিট টেস্টিংয়ের কার্যকারিতা বৃদ্ধি করে।
Read more