কার্যকর জাভা ( এখানে বর্ধিত আলোচনা ) থেকে আইটেম 18 এর মতো আমার একটি কঙ্কালের বাস্তবায়ন রয়েছে । এটি একটি বিমূর্ত শ্রেণি যা 2 টি পাবলিক মেথড মেথডএ () এবং মেথডবি () সরবরাহ করে যা "শূন্যস্থান পূরণ করতে" সাবক্লাসের পদ্ধতিগুলি কল করে যা আমি কোনও বিমূর্ত পদ্ধতিতে সংজ্ঞা দিতে পারি না।
আমি এটি প্রথমে একটি কংক্রিট ক্লাস তৈরি করে এবং এর জন্য ইউনিট পরীক্ষা লেখার মাধ্যমে এটি বিকাশ করেছি। যখন দ্বিতীয় শ্রেণি এসেছিল, আমি সাধারণ আচরণ নিষ্কাশন করতে সক্ষম হয়েছিল, দ্বিতীয় শ্রেণিতে "অনুপস্থিত ফাঁকগুলি" প্রয়োগ করতে পেরেছিলাম এবং এটি প্রস্তুত ছিল (অবশ্যই, দ্বিতীয় সাবক্লাসের জন্য ইউনিট পরীক্ষা তৈরি করা হয়েছিল)।
সময় কেটে গেছে এবং এখন আমার 4 টি সাবক্লাস রয়েছে, প্রতিটি বাস্তবায়নকারী 3 স্বল্প সুরক্ষিত পদ্ধতি যা তাদের কংক্রিট বাস্তবায়নের জন্য খুব নির্দিষ্ট, যখন কঙ্কালের বাস্তবায়ন সমস্ত জেনেরিক কাজ করে।
আমার সমস্যাটি হ'ল আমি যখন একটি নতুন বাস্তবায়ন তৈরি করি তখন আমি আবার পরীক্ষাগুলি লিখি:
- সাবক্লাস একটি প্রদত্ত প্রয়োজনীয় পদ্ধতি কল করে?
- একটি প্রদত্ত পদ্ধতিতে কি কোনও টিকা আছে?
- আমি কী পদ্ধতিটি থেকে প্রত্যাশিত ফলাফল পাব?
- আমি কী পদ্ধতি বি থেকে প্রত্যাশিত ফলাফল পাব?
এই পদ্ধতির সাথে সুবিধাগুলি দেখুন:
- এটি পরীক্ষার মাধ্যমে সাবক্লাসের প্রয়োজনীয়তা দলিল করে
- সমস্যাযুক্ত রিফ্যাক্টরিংয়ের ক্ষেত্রে এটি দ্রুত ব্যর্থ হতে পারে
- সামগ্রিকভাবে এবং তাদের সর্বজনীন এপিআইয়ের মাধ্যমে সাবক্লাসটি পরীক্ষা করুন ("পদ্ধতিটি () কী কাজ করে?" এবং না "এই সুরক্ষিত পদ্ধতিটি কি কাজ করে?")
আমার সমস্যাটি হ'ল নতুন সাবক্লাসের পরীক্ষাগুলি মূলত একটি নো-ব্রেইনার: - পরীক্ষাগুলি সমস্ত সাবক্লাসে একই রকম হয়, তারা কেবল পদ্ধতিগুলির রিটার্নের ধরণের পরিবর্তন করে (কঙ্কালের বাস্তবায়ন জেনেরিক) এবং বৈশিষ্ট্যগুলি I পরীক্ষার দৃsert় অংশটি পরীক্ষা করুন। - সাধারণত সাবক্লাসগুলির জন্য নির্দিষ্ট কোনও পরীক্ষা থাকে না
আমি পরীক্ষাগুলি যেভাবে সাবক্লাসের ফলাফলের উপর নিজেই ফোকাস করেছে এবং এটিকে রিফ্যাক্টরিং থেকে রক্ষা করেছে তা পছন্দ করি তবে পরীক্ষার বাস্তবায়ন কেবল "ম্যানুয়াল কাজ" হয়ে যায় তা আমাকে ভাবায় যে আমি কিছু ভুল করছি।
শ্রেণি শ্রেণিবিন্যাস পরীক্ষা করার সময় এই সমস্যাটি কি সাধারণ? আমি কীভাবে এড়াতে পারি?
PS: আমি কঙ্কালের ক্লাস পরীক্ষা করার বিষয়ে ভেবেছিলাম, তবে এটি পরীক্ষা করতে সক্ষম হওয়ার জন্য একটি বিমূর্ত শ্রেণির একটি উপহাস তৈরি করাও আশ্চর্যজনক বলে মনে হয়। এবং আমি মনে করি যে সাবস্ট্রাক্স দ্বারা প্রত্যাশিত আচরণ পরিবর্তন না করে এমন অ্যাবস্ট্রাক্ট শ্রেণিতে কোনও রিফ্যাক্টরিং দ্রুত লক্ষ্য করা যাবে না। আমার সাহস আমাকে বলে যে "সামগ্রিকভাবে" সাবক্লাসটি পরীক্ষা করা এখানে পছন্দসই পদ্ধতি, তবে দয়া করে নির্দ্বিধায় আমাকে ভুল বলে নি :)
PS2: আমি googled এবং বিষয় সম্পর্কে অনেক প্রশ্ন খুঁজে পেয়েছি। এর মধ্যে একটি হ'ল এটি যা নাইজেল থর্নের দুর্দান্ত উত্তর রয়েছে , আমার কেসটি হবে তার "নম্বর 1" be এটি দুর্দান্ত হবে তবে আমি এই মুহুর্তে রিফ্যাক্টর করতে পারি না, তাই এই সমস্যাটি নিয়ে আমাকে বাঁচতে হবে। আমি যদি রিফ্যাক্টর করতে পারি তবে কৌশল হিসাবে আমার প্রতিটি উপক্লাস থাকবে। এটি ঠিক আছে, তবে আমি "মেইন ক্লাস" পরীক্ষা করে কৌশলগুলি পরীক্ষা করে দেখব তবে আমি কোনও রিফ্যাক্টরিং লক্ষ্য করব না যা মূল শ্রেণি এবং কৌশলগুলির মধ্যে সংহতিকে ভেঙে দেয়।
PS3: আমি বিমূর্ত শ্রেণির পরীক্ষা করার জন্য "এটি গ্রহণযোগ্য" বলে কিছু উত্তর পেয়েছি। আমি সম্মত হই যে এটি গ্রহণযোগ্য, তবে আমি জানতে চাই যে এই ক্ষেত্রে পছন্দসই পদ্ধতিটি (আমি এখনও ইউনিট পরীক্ষা দিয়ে শুরু করছি)