1.1 মকিটো লাইব্রেরি
আজ আমরা উন্নত পরীক্ষার সাথে পরিচিত হব। আরও নির্দিষ্টভাবে, মকিটো লাইব্রেরির সাথে । এই ব্যবসা থেকে বেরিয়ে আসার কথাও ভাববেন না।
প্রথমত, এই লাইব্রেরিটি স্প্রিং টেস্টিং এর একটি আদর্শ । যা আসলে জাভা ব্যাকএন্ড ডেভেলপমেন্ট ইন্ডাস্ট্রিতে স্ট্যান্ডার্ড।
দ্বিতীয়ত, আপনাকে আপনার স্প্রিং কোডের জন্য পরীক্ষা লিখতে হবে । আপনি যে ব্যাকএন্ডটি লিখেছেন তা বোঝার একমাত্র উপায় হল এটির API এর পদ্ধতিগুলিকে কল করা । এবং পরীক্ষা দিয়ে এটি করা তাদের ছাড়া তুলনায় 10 গুণ সহজ। আপনি নিজেই দেখতে পাবেন।
pom.xml
আপনি কোড ব্যবহার করে আপনার মকিটো লাইব্রেরি যোগ করতে পারেন:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
মকিটো প্রকল্পের পুরো সোর্স কোডটি গিটহাবে পাওয়া যাবে ।
1.2 উপহাস বস্তু
তাহলে এই মকিটো কি এবং কেন এটি এত ভাল?
পরীক্ষার বিকাশ এবং বিকাশের প্রক্রিয়াতে, প্রায়শই একটি বাস্তব বস্তুর পরিবর্তে কোডে কিছু ধরণের "স্টাব" স্লিপ করার প্রয়োজন ছিল।
উদাহরণস্বরূপ, ডেটাবেসের সাথে কাজ করে এমন কোডটি পরীক্ষা করা হয় এবং সেখানে কিছু পরিবর্তন করে। এটা ভাল যে প্রতিটি পরীক্ষার আগে এই ডাটাবেসের অবস্থা একই থাকে (অন্যথায় পরীক্ষাগুলি ভিন্ন হবে)। এবং আমি চাই বেস সহজ হতে যাতে দ্রুত রোল ব্যাক এই রাজ্য.
অথবা, উদাহরণস্বরূপ, আপনি একটি কোড পরীক্ষা করছেন যা দরকারী SMS পাঠায়। এবং সরাসরি মেইলিংয়ের জন্য, তিনি কিছু ধরণের অর্থপ্রদত্ত এসএমএস গেটওয়ে ব্যবহার করেন। কোডটি পরীক্ষা করার জন্য এটিতে কিছু ভার্চুয়াল গেটওয়ে স্লিপ করা ভাল হবে, যাতে বোধগম্য লোকেদের শত শত এসএমএস না পাঠানো হয়।
অথবা আপনার কোড অন্যান্য ওয়েব সার্ভার থেকে ডেটা অনুরোধ করছে যা পরীক্ষা সার্ভারে সহজলভ্য নয়। অথবা আপনি অনলাইন অর্থপ্রদানের জন্য একটি কোড লেখেন যা 50 বার পরীক্ষা করা প্রয়োজন, এবং শুধুমাত্র তারপর বাস্তব আর্থিক চ্যানেলে ব্যবহার করার অনুমতি দেওয়া হয়।
আমি মনে করি আপনি বুঝতে পেরেছেন... ভার্চুয়াল অবজেক্ট, বা যেমন এগুলিকে স্টাব অবজেক্টও বলা হয়, একটি খুব দরকারী জিনিস।
এবং এখানে অসুবিধা আসে - জাভা স্ট্যাটিক টাইপিং আছে. ReadDatabase
এর মানে হল যে টাইপের একটি অবজেক্টের পরিবর্তে একটি ভেরিয়েবলে একটি অবজেক্টের রেফারেন্স বরাদ্দ করার জন্য VirtualDatabase
, আপনাকে ক্লাসটি VirtualDatabase
থেকে উত্তরাধিকারী হতে হবে RealDatabase
।
তারপর দেখা যাচ্ছে যে ক্লাসে RealDatabase
একগুচ্ছ ব্যক্তিগত পদ্ধতি এবং ভেরিয়েবল রয়েছে যা অন্যান্য বাস্তব বস্তুর রেফারেন্স সংরক্ষণ করে এবং আপনি এইভাবে একটি সাধারণ স্টাব লিখতে পারবেন না। তাত্ত্বিকভাবে এটি ভাল, কিন্তু বাস্তবে এটি একটি মৃত শেষ।
এবং এখানে উদ্ধার আসে (আপনি DynamicProxy
আরও বিস্তারিতভাবে পড়তে পারেন ), যা জাভা 5 এ ফিরে এসেছে। এটি আপনাকে ভার্চুয়াল অবজেক্ট তৈরি করতে দেয় যা কম্পাইলারের কোন অভিযোগ নেই।
এই ধরনের ভার্চুয়াল বস্তুকে বলা হয় মক (মক শব্দ থেকে - লেআউট)। মকিটো লাইব্রেরি এই মকগুলির সাথে কাজটিকে অভূতপূর্ব উচ্চতায় নিয়ে যেতে সক্ষম হয়েছিল। তাই, লাইব্রেরির নাম।
1.3 @এক্সটেন্ড উইথ টীকা
মকিটো লাইব্রেরি JUnit এর সাথে দুর্দান্ত কাজ করে, এটি এমনকি এটির একটি এক্সটেনশন হিসাবে বিবেচিত হতে পারে।
আপনার ইউনিট পরীক্ষায় মকিটো লাইব্রেরি সক্ষম করার দুটি উপায় রয়েছে। প্রথম উপায় হল একটি বিশেষ টীকা যোগ করা:
@ExtendWith(MockitoExtension.class)
public class MockitoAnnotationTest {
...
}
দ্বিতীয় উপায় হল পদ্ধতিটি কল করে এর কাজটি সক্ষম করা openMocks()
:
public class MockitoAnnotationTest {
@BeforeEach
public void init() {
MockitoAnnotations.openMocks(this);
}
}
প্রায়শই, আপনি প্রথম বিকল্পটি দেখতে পাবেন, কিন্তু কখনও কখনও এটি একটি দ্বিতীয় বিকল্প আছে তা জানা দরকারী।
GO TO FULL VERSION