Java Technologies @SpringBootTest এবং @MockBean এর ব্যবহার গাইড ও নোট

246

স্প্রিং বুটের টেস্টিং অত্যন্ত গুরুত্বপূর্ণ একটি দিক, যা অ্যাপ্লিকেশনটির বিভিন্ন অংশের কার্যকারিতা পরীক্ষা করতে সহায়তা করে। @SpringBootTest এবং @MockBean অ্যানোটেশন দুটি স্প্রিং বুট টেস্টিং ফ্রেমওয়ার্কে ব্যাপকভাবে ব্যবহৃত হয়। এগুলো বিশেষভাবে ইন্টিগ্রেশন টেস্ট এবং ইউনিট টেস্ট পরিচালনার জন্য সহায়ক।


@SpringBootTest অ্যানোটেশন

@SpringBootTest একটি স্প্রিং বুট টেস্টিং অ্যানোটেশন, যা পুরো স্প্রিং কনটেইনার লোড করে এবং টেস্টে স্প্রিং বুট অ্যাপ্লিকেশনটির পুরো প্রসেস পরীক্ষা করতে সক্ষম হয়। এটি ইনটিগ্রেশন টেস্ট (Integration Test) পরিচালনা করার জন্য ব্যবহৃত হয়, যেখানে অ্যাপ্লিকেশনটি পুরোপুরি রান হয় এবং ডাটাবেস, সার্ভিস, কনট্রোলারসহ সবগুলো উপাদান ইন্টিগ্রেটেড থাকে। এটি মূলত পুরো অ্যাপ্লিকেশন কনটেক্সটের সঙ্গে ইন্টিগ্রেশন টেস্ট করার জন্য ব্যবহৃত হয়।

ব্যবহারের উদাহরণ:

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class ApplicationTests {

    @Test
    void contextLoads() {
        // টেস্ট যখন রান করবে, তখন অ্যাপ্লিকেশন কনটেক্সট লোড হবে
    }
}

এখানে @SpringBootTest অ্যানোটেশনটি ব্যবহার করা হয়েছে, যা স্প্রিং কনটেইনার লোড করে এবং টেস্ট চলাকালীন পুরো অ্যাপ্লিকেশন কনটেক্সট পরীক্ষার জন্য প্রস্তুত থাকে।

সুবিধা:

  • পুরো স্প্রিং কনটেইনারের জন্য একটি প্রিলোডেড কনটেক্সট তৈরি করে।
  • বিভিন্ন সার্ভিস, রেপোজিটরি এবং কনট্রোলারসহ অ্যাপ্লিকেশনের যাবতীয় কাজ পরীক্ষা করা যায়।

সীমাবদ্ধতা:

  • @SpringBootTest অনেক বড় এবং জটিল অ্যাপ্লিকেশনগুলির ক্ষেত্রে টেস্ট চলাকালীন সময় অনেক বেশি রিসোর্স ব্যবহার করতে পারে।
  • টেস্টের এক্সিকিউশন সময় বেশি হতে পারে কারণ পুরো কনটেইনার লোড হতে সময় নেয়।

@MockBean অ্যানোটেশন

@MockBean স্প্রিং বুট টেস্টিং এর একটি অ্যানোটেশন যা Mockito লাইব্রেরি ব্যবহার করে স্প্রিং কনটেক্সট এর মধ্যে মক (mock) অবজেক্ট ইনজেক্ট করার জন্য ব্যবহৃত হয়। এটি সাধারণত একক ইউনিট টেস্টে ব্যবহৃত হয়, যেখানে আপনি স্প্রিং কনটেইনারের নির্দিষ্ট সেবা বা ডিপেনডেন্সি মক করতে চান। @MockBean একে মক করে, টেস্টের সময় আসল সেবা বা ডিপেনডেন্সির পরিবর্তে মক অবজেক্ট ব্যবহার করা হয়।

ব্যবহারের উদাহরণ:

import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import static org.mockito.Mockito.*;

@SpringBootTest
public class UserServiceTest {

    @MockBean
    private UserRepository userRepository;

    @Test
    public void testGetUserById() {
        User mockUser = new User(1L, "John Doe");
        when(userRepository.findById(1L)).thenReturn(Optional.of(mockUser));

        User result = userService.getUserById(1L);

        assertEquals("John Doe", result.getName());
    }
}

এখানে @MockBean অ্যানোটেশন ব্যবহার করা হয়েছে যাতে UserRepository এর মক অবজেক্ট ইনজেক্ট করা হয়। তারপর, userService.getUserById(1L) কল করলে আসল userRepository এর পরিবর্তে মক অবজেক্টটি ব্যবহৃত হবে।

সুবিধা:

  • টেস্ট চলাকালীন নির্দিষ্ট ডিপেনডেন্সি মক করে শুধুমাত্র সেই অংশটি পরীক্ষা করা সম্ভব।
  • ইন্টিগ্রেশন টেস্টে ব্যবহারকারী সেবা বা ডাটাবেসের অ্যাক্সেসের পরিবর্তে মক অবজেক্ট ব্যবহৃত হয়, যার ফলে অ্যাপ্লিকেশনের বিভিন্ন অংশ পরীক্ষা করা সহজ হয়।

সীমাবদ্ধতা:

  • মক অবজেক্ট ব্যবহার করলে বাস্তব ডাটাবেস বা সার্ভিসের কার্যকারিতা পরীক্ষা করা সম্ভব হয় না। তাই, শুধু নির্দিষ্ট সার্ভিসের কার্যকারিতা পরীক্ষা করা যায়।

@SpringBootTest এবং @MockBean এর পার্থক্য

বৈশিষ্ট্য@SpringBootTest@MockBean
ব্যবহারইনটিগ্রেশন টেস্টের জন্য ব্যবহৃতইউনিট টেস্টের জন্য ব্যবহৃত
ফোকাসপুরো অ্যাপ্লিকেশন কনটেক্সট পরীক্ষানির্দিষ্ট ডিপেনডেন্সি মক করা
রিসোর্স ব্যবহারবেশী রিসোর্স ব্যবহার হতে পারেমক অবজেক্ট ব্যবহার করে কম রিসোর্স
পারফরম্যান্সঅ্যাপ্লিকেশন কনটেইনার লোড হতে সময় নেয়দ্রুত এবং কাস্টম টেস্টের জন্য উপযুক্ত

সারাংশ

@SpringBootTest এবং @MockBean দুটি স্প্রিং বুট টেস্টিং অ্যানোটেশন, যা আলাদা আলাদা পরিস্থিতিতে ব্যবহার করা হয়। @SpringBootTest পুরো স্প্রিং কনটেইনার লোড করে এবং ইনটিগ্রেশন টেস্ট পরিচালনা করে, যেখানে পুরো অ্যাপ্লিকেশনটি পরীক্ষা করা হয়। অপরদিকে, @MockBean শুধুমাত্র নির্দিষ্ট ডিপেনডেন্সি মক করে এবং ইউনিট টেস্টের জন্য ব্যবহৃত হয়, যেখানে পুরো কনটেইনার লোড করা হয় না। এগুলোর সঠিক ব্যবহার আপনার অ্যাপ্লিকেশনটিকে কার্যকরীভাবে পরীক্ষা করতে সহায়তা করে।


Content added By
Promotion

Are you sure to start over?

Loading...