Partial Mocking এর ধারণা

Partial Mocks তৈরি - ইজিমক (EasyMock) - Java Technologies

394

Partial Mocking হল একটি শক্তিশালী টেস্টিং কৌশল যা একটি বাস্তব অবজেক্টের কিছু অংশ মক করার জন্য ব্যবহৃত হয়, কিন্তু পুরো অবজেক্টকে মক করা হয় না। এর মাধ্যমে আপনি একটি অবজেক্টের কিছু মেথডকে প্রকৃত বাস্তবায়ন ব্যবহার করতে পারেন এবং কিছু মেথডকে মক করে পরীক্ষার জন্য কাস্টম আচরণ নির্ধারণ করতে পারেন।

EasyMockPartial Mocking এর মাধ্যমে, আপনি ক্লাসের বাস্তব মেথডগুলির কিছু অংশের পরিবর্তে মক মেথড ব্যবহার করতে পারেন, যখন অন্য মেথডগুলি তাদের প্রকৃত বাস্তবায়ন অনুযায়ী কাজ করবে। এটি খুবই কার্যকরী যখন আপনি একটি মেথডের কিছু নির্দিষ্ট আচরণ পরীক্ষা করতে চান কিন্তু অন্যান্য মেথডগুলির প্রকৃত কার্যকারিতা পরীক্ষা করতে চান।

Partial Mocking এর প্রয়োজনীয়তা

  • Efficiency: কিছু মেথডের জন্য মকিংয়ের মাধ্যমে কাস্টম আচরণ তৈরি করা, যখন বাকি মেথডগুলোকে প্রকৃত বাস্তবায়ন ব্যবহার করে চালানো যায়। এতে কোডের নমনীয়তা বজায় থাকে এবং কার্যকরী টেস্ট তৈরি করা যায়।
  • Legacy Code Testing: যখন আপনার কাছে একটি পুরানো কোড থাকে যা পুনরায় লেখা সম্ভব নয়, তখন Partial Mocking এর মাধ্যমে সেগুলোর টেস্ট করা যায়, বিশেষ করে যখন আপনি কিছু অংশ মক করে শুধু নির্দিষ্ট কার্যকারিতা পরীক্ষা করতে চান।

EasyMock এর মাধ্যমে Partial Mocking

EasyMock এ Partial Mocking করার জন্য createMock() এর পরিবর্তে createNiceMock() বা createMockBuilder() মেথড ব্যবহার করা হয়। তবে, সবচেয়ে সাধারণ পদ্ধতিটি হল mocking একটি বাস্তব অবজেক্টের জন্য শুধু নির্দিষ্ট মেথড এবং অন্যান্য মেথডের জন্য তাদের প্রকৃত কার্যকারিতা চালু রাখা।

Partial Mocking করার প্রক্রিয়া:

  1. Mock the class using EasyMock: মক অবজেক্ট তৈরি করুন।
  2. Define expectations for specific methods: কিছু নির্দিষ্ট মেথডের জন্য কাস্টম আচরণ নির্ধারণ করুন।
  3. Replay and verify: মক অবজেক্টকে রেপ্লে করুন এবং পরীক্ষাগুলি যাচাই করুন।

উদাহরণ: EasyMock এ Partial Mocking

ধরা যাক, আমাদের একটি UserService ক্লাস রয়েছে, যার মধ্যে কিছু মেথড রয়েছে যা বাস্তবায়ন করা হয়েছে, কিন্তু আমরা শুধুমাত্র একটি নির্দিষ্ট মেথড মক করতে চাই।

1. UserService ক্লাস:

public class UserService {
    private DatabaseService databaseService;

    public UserService(DatabaseService databaseService) {
        this.databaseService = databaseService;
    }

    public String getUserDetails(int userId) {
        // Imagine this method calls an external database to get user details
        return databaseService.fetchUserDetails(userId);
    }

    public String updateUserDetails(int userId, String details) {
        // Imagine this method updates user details in a database
        return "User details updated successfully";
    }
}

2. DatabaseService ক্লাস:

public class DatabaseService {
    public String fetchUserDetails(int userId) {
        // Actual database call (to be mocked in the test)
        return "User details from database";
    }
}

3. EasyMock with Partial Mocking:

import static org.easymock.EasyMock.*;

public class PartialMockingExample {
    public static void main(String[] args) {
        // Step 1: Create a real object (partial mock)
        DatabaseService databaseServiceMock = createMock(DatabaseService.class);

        // Step 2: Create a UserService object with the mock DatabaseService
        UserService userService = new UserService(databaseServiceMock);

        // Step 3: Set expectations on the mock object (only for fetchUserDetails)
        expect(databaseServiceMock.fetchUserDetails(1)).andReturn("Mocked user details");

        // Step 4: Activate the mock
        replay(databaseServiceMock);

        // Step 5: Test the methods
        System.out.println(userService.getUserDetails(1));  // Should print "Mocked user details"
        System.out.println(userService.updateUserDetails(1, "new details"));  // Should print "User details updated successfully"

        // Step 6: Verify the expectations
        verify(databaseServiceMock);
    }
}

Output:

Mocked user details
User details updated successfully

Partial Mocking এর প্রক্রিয়া:

  1. createMock(): createMock() ব্যবহার করে একটি মক অবজেক্ট তৈরি করা হয়েছে, কিন্তু এটি পুরো অবজেক্টের সব মেথড মক করছে না, বরং কিছু নির্দিষ্ট মেথড (এক্ষেত্রে fetchUserDetails) মক করা হয়েছে।
  2. expect(): expect() মেথডের মাধ্যমে শুধুমাত্র fetchUserDetails() মেথডের জন্য একটি কাস্টম আচরণ সেট করা হয়েছে।
  3. replay(): মক অবজেক্টটি replay() মেথড ব্যবহার করে একটিভেট করা হয়েছে।
  4. verify(): verify() মেথড ব্যবহার করে যাচাই করা হয়েছে যে মক অবজেক্টের মেথডটি প্রত্যাশিতভাবে কল হয়েছে কিনা।

Partial Mocking এর সুবিধা

  1. Reusable Real Methods: কিছু মেথডের জন্য বাস্তব কার্যকারিতা ব্যবহারের মাধ্যমে আপনি মক অবজেক্টের উপর অতিরিক্ত নির্ভরতা এড়িয়ে চলতে পারেন, যার ফলে কোড আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
  2. Efficiency: আপনি যখন কিছু মেথডকে মক করে টেস্ট করছেন, তখন সিস্টেমের বাকি অংশে আসল কার্যকারিতা ব্যবহার করতে পারেন, যা সময় এবং রিসোর্স সাশ্রয়ী।
  3. Test Isolation: মকিংয়ের মাধ্যমে আপনি কিছু নির্দিষ্ট আচরণ পরীক্ষা করতে পারবেন এবং অন্যান্য অংশের বাস্তবায়ন এড়াতে পারবেন।

Partial Mocking এর সীমাবদ্ধতা

  1. Complexity: কিছু ক্ষেত্রে, partial mocking কোডের জটিলতা বাড়াতে পারে, কারণ এটি বাস্তবায়ন এবং মকিংয়ের সংমিশ্রণ সৃষ্টি করে।
  2. Maintenance: বেশ কিছু মকিং কৌশল ব্যবহার করার সময় কোডের রক্ষণাবেক্ষণ কঠিন হতে পারে, বিশেষ করে যখন আসল এবং মক মেথডগুলির মধ্যে পার্থক্য খুব বেশি হয়ে যায়।

সারাংশ

Partial Mocking হল একটি শক্তিশালী টেস্টিং কৌশল যেখানে শুধুমাত্র একটি অবজেক্টের নির্দিষ্ট অংশ মক করা হয় এবং অন্যান্য অংশের বাস্তবায়ন ব্যবহার করা হয়। EasyMock এর মাধ্যমে এই প্রক্রিয়াটি খুবই সহজ হয়ে যায়, যেখানে মক অবজেক্ট তৈরি করা এবং তার আচরণ কাস্টমাইজ করা সম্ভব হয়। এটি সফটওয়্যার টেস্টিংকে আরও নমনীয় এবং কার্যকরী করে তোলে, বিশেষ করে যখন আপনি একটি ক্লাস বা অবজেক্টের নির্দিষ্ট মেথডগুলো পরীক্ষা করতে চান কিন্তু তার অন্য মেথডের বাস্তবায়ন কার্যকরী রাখতে চান।


Content added By
Promotion

Are you sure to start over?

Loading...