এই ধারণাটি দিয়ে শুরু:
1) আপনি যে আচরণটি চান তা দিয়ে শুরু করুন। এটির জন্য একটি পরীক্ষা লিখুন। পরীক্ষা ব্যর্থ দেখুন।
2) পরীক্ষা পাস করার জন্য পর্যাপ্ত কোড লিখুন। সমস্ত পরীক্ষা পাস দেখুন।
3) রিডান্ট্যান্ট / স্লোপি কোড -> রিফ্যাক্টর সন্ধান করুন। পরীক্ষা পাস এখনও দেখুন। গোটো ঘ
সুতরাং # 1, আসুন আমরা বলি যে আপনি একটি নতুন কমান্ড তৈরি করতে চান (কমান্ডটি কীভাবে কাজ করবে তা আমি প্রসারিত করছি, সুতরাং আমার সাথে সহ্য করুন)। (এছাড়াও, আমি চরম টিডিডির চেয়ে কিছুটা বাস্তববাদী হবো)
নতুন কমান্ডটিকে মেকমাইলঞ্চ বলা হয়, সুতরাং আপনি প্রথমে এটি ইনস্ট্যান্ট করার জন্য এবং আদেশের নাম পাওয়ার জন্য একটি পরীক্ষা তৈরি করুন:
@Test
public void instantiateMakeMyLunch() {
ICommand command = new MakeMyLunchCommand();
assertEquals("makeMyLunch",command.getCommandName());
}
এটি ব্যর্থ হয়, আপনাকে নতুন কমান্ড ক্লাস তৈরি করতে বাধ্য করে এবং এর নামটি ফিরিয়ে আনতে পারে (পিউরিস্ট বলবেন এটি টিডির দুটি রাউন্ড, 1 নয়)। সুতরাং আপনি শ্রেণিটি তৈরি করেন এবং এটি কমান্ডের নাম ফিরিয়ে আনার সহ আইকোমন্ড ইন্টারফেসটি প্রয়োগ করুন। সমস্ত পরীক্ষা চালানো এখন সমস্ত পাস দেখায়, তাই আপনি পুনর্বিবেচিত সুযোগগুলি সন্ধানের জন্য এগিয়ে যান। সম্ভবত কিছুই না।
সুতরাং পরবর্তী আপনি এটি কার্যকর করতে চান। সুতরাং আপনাকে জিজ্ঞাসা করতে হবে: আমি কীভাবে জানি যে "মেকমাইলঞ্চ" সফলভাবে "আমার মধ্যাহ্নভোজন করেছে"। এই অপারেশনের কারণে সিস্টেমে কী পরিবর্তন ঘটে? আমি কি এর জন্য পরীক্ষা করতে পারি?
মনে করুন এটি পরীক্ষা করা সহজ:
@Test
public void checkThatMakeMyLunchIsSuccessful() {
ICommand command = new MakeMyLunchCommand();
command.execute();
assertTrue( Lunch.isReady() );
}
অন্যান্য সময়, এটি আরও কঠিন এবং আপনি যা করতে চান তা হ'ল সাবজেক্টের আন্ডার-টেস্টের (MakeMyLunchCommand) দায়িত্বগুলির পরীক্ষা করা। সম্ভবত MakeMyLunchCommand এর দায়িত্ব হ'ল ফ্রিজ এবং মাইক্রোওয়েভের সাথে যোগাযোগ করা। সুতরাং এটি পরীক্ষা করার জন্য আপনি একটি মক ফ্রিজ এবং মক মাইক্রোওয়েভ ব্যবহার করতে পারেন। [দুটি নমুনা মক ফ্রেমওয়ার্ক হলেন মকিতো এবং এনমক বা এখানে দেখুন look ]
কোন ক্ষেত্রে আপনি নিম্নলিখিত সিউডো কোডের মতো কিছু করবেন:
@Test
public void checkThatMakeMyLunchIsSuccessful() {
Fridge mockFridge = mock(Fridge);
Microwave mockMicrowave = mock(Microwave);
ICommand command = new MakeMyLunchCommand( mockFridge, mockMicrowave );
command.execute();
mockFramework.assertCalled( mockFridge.removeFood );
mockFramework.assertCalled( microwave.turnon );
}
পিউরিস্ট বলেছেন যে আপনার ক্লাসের দায়িত্ব পরীক্ষা করুন - অন্যান্য শ্রেণীর সাথে এর মিথস্ক্রিয়া (কমান্ডটি ফ্রিজটি খোলার সাথে সাথে মাইক্রোওয়েভ চালু করে দিয়েছিল?)।
অনুশীলনবিদ একদল শ্রেণীর জন্য পরীক্ষা এবং ফলাফলের জন্য পরীক্ষা বলেছেন (আপনার মধ্যাহ্নভোজন প্রস্তুত?)
আপনার সিস্টেমে কাজ করে এমন সঠিক ব্যালেন্স খুঁজুন।
(দ্রষ্টব্য: বিবেচনা করুন যে সম্ভবত আপনি আপনার ইন্টারফেস কাঠামোতে খুব তাড়াতাড়ি এসে পৌঁছেছেন। সম্ভবত আপনি আপনার ইউনিট পরীক্ষা এবং প্রয়োগগুলি লেখার সাথে সাথে এইটিকে বিকশিত করতে পারেন এবং # 3 ধাপে আপনি সাধারণ ইন্টারফেসের সুযোগটি "লক্ষ্য করবেন")।