আপনি যদি ব্যক্তিগতভাবে এটির অর্থ বোঝান যেভাবে আপনি এটি বোঝাতে চেয়েছেন তবে তা না - আপনি এটির ইউনিট পরীক্ষা করা উচিত নয়। আপনি কেবল পর্যবেক্ষণযোগ্য আচরণ / রাষ্ট্রের একক পরীক্ষামূলক হওয়া উচিত। আপনি টিডিডির "রেড-গ্রিন-রিফ্যাক্টর" চক্রের পিছনের পয়েন্টটি মিস করতে পারেন (এবং যদি আপনি প্রথমে পরীক্ষা না করেন তবে একই নীতিটি প্রয়োগ হয়)। একবার পরীক্ষাগুলি লেখা হয়ে গেলে এবং পাস করার পরে আপনি চান না যে সেগুলি রিফেক্টরিংয়ের সময় পরিবর্তন করা হোক। আপনি যদি ব্যক্তিগত পরীক্ষার জন্য ইউনিট পরীক্ষা করতে বাধ্য হন তবে এর অর্থ সম্ভবত পাবলিক কার্যকারিতা চারপাশে ইউনিট পরীক্ষাগুলি ত্রুটিযুক্ত। যদি পাবলিক কোডের চারপাশে পরীক্ষা লিখতে সমস্যা এবং জটিল হয় তবে আপনার ক্লাসটি খুব বেশি কাজ করছে বা আপনার সমস্যাটি পরিষ্কারভাবে সংজ্ঞায়িত হয়নি।
সবচেয়ে খারাপ, সময়ের সাথে সাথে আপনার ইউনিট পরীক্ষাগুলি একটি বল এবং চেইনে পরিণত হবে যা আপনার কোনও মান যোগ না করে ধীরে ধীরে কমিয়ে দেবে (বাস্তবায়ন পরিবর্তন, উদাহরণস্বরূপ অনুকূলকরণ বা সদৃশ অপসারণ, ইউনিট পরীক্ষায় কোনও প্রভাব ফেলবে না)। অভ্যন্তরীণ কোডটি তবে আচরণ / রাষ্ট্রটি পর্যবেক্ষণযোগ্য (কেবলমাত্র একটি সীমিত পথে) ইউনিট হিসাবে পরীক্ষা করা উচিত।
আমি যখন প্রথম ইউনিট টেস্টিং করেছি তখন আমি ইউনিট পরীক্ষার ব্যক্তিগত স্টাফগুলিতে সমস্ত ধরণের কৌশলগুলি টানলাম তবে এখন, আমার বেল্টের নিচে কয়েক বছর ধরে, আমি এটি সময়ের অপচয় থেকে আরও খারাপ দেখতে পাচ্ছি।
এখানে কিছুটা নির্বোধ উদাহরণ দেওয়া আছে, অবশ্যই বাস্তব জীবনে আপনার এইগুলির চেয়ে আরও বেশি পরীক্ষা হবে:
ধরা যাক আপনার একটি শ্রেণি রয়েছে যা স্ট্রিংয়ের একটি বাছাই করা তালিকা প্রদান করে - ফলাফলটি বাছাই করা উচিত তা পরীক্ষা করা উচিত, এটি তালিকাটি কীভাবে সাজায় তা নয়। আপনি কেবলমাত্র তালিকাটিকে বাছাই করে এমন একক অ্যালগরিদম দিয়ে আপনার বাস্তবায়ন শুরু করতে পারেন। একবার এটি হয়ে গেলে আপনার পরীক্ষাটি পরিবর্তন করার দরকার নেই যদি আপনি নিজের বাছাই করা অ্যালগরিদম পরিবর্তন করেন। এই মুহুর্তে আপনার একটি একক পরীক্ষা আছে (ধরে নেওয়া বাছাই করা আপনার শ্রেণিতে এম্বেড হয়েছে):
- আমার ফলাফল বাছাই করা হয়?
এখন বলুন যে আপনি দুটি অ্যালগরিদম চান (সম্ভবত কিছু কিছু ক্ষেত্রে একটি দক্ষ তবে অন্যদের নয়), তবে প্রতিটি অ্যালগরিদ একটি ভিন্ন শ্রেণীর দ্বারা সরবরাহ করা যেতে পারে এবং আপনার শ্রেণি তাদের কাছ থেকে বাছাই করতে পারে - আপনি এটি পরীক্ষা করে দেখতে পারেন যে এটি ঘটছে আপনার নির্বাচিত পরিস্থিতিগুলি মক ব্যবহার করে ব্যবহার করা হয়েছে, তবে আপনার আসল পরীক্ষাটি এখনও বৈধ এবং আমরা কেবল পর্যবেক্ষণযোগ্য আচরণ / অবস্থা যাচাই করছি এটির পরিবর্তনের দরকার নেই। আপনি 3 টি পরীক্ষা দিয়ে শেষ:
- আমার ফলাফল বাছাই করা হয়?
- একটি দৃশ্যে দেওয়া হয়েছে (আসুন শুরু করা যাক প্রাথমিক তালিকাটি প্রায় শুরু অনুসারে সাজানো হয়েছে) ক্লাসে করা একটি কল যা অ্যালগরিদম এক্স ব্যবহার করে স্ট্রিং সাজায়?
- একটি দৃশ্যে দেওয়া হয়েছে (প্রাথমিক তালিকাটি এলোমেলোভাবে রয়েছে) শ্রেণিতে একটি কল যা অ্যালগরিদম ওয়াই ব্যবহার করে স্ট্রিং সাজায়?
বিকল্পটি ছিল আপনার শ্রেণীর ভিতরে প্রাইভেট কোড পরীক্ষা করা শুরু করা - আপনি এ থেকে কোনও লাভ করেন না - উপরের পরীক্ষাগুলি আমাকে ইউনিট পরীক্ষার বিষয়ে যতদূর জানা দরকার তা সব বলে দেয়। ব্যক্তিগত টেস্ট যুক্ত করে আপনি নিজেকে একটি সোজা জ্যাকেট তৈরি করছেন, ফলাফলটি বাছাই করা হয়েছে তা না শুধুমাত্র পরীক্ষা করলেও এটি কীভাবে বাছাই করা হয়েছে তা আর কত বেশি কাজ হবে?
টেস্টগুলি (এই ধরণের) কেবল তখনই পরিবর্তন করা উচিত যখন আচরণ পরিবর্তন হয়, প্রাইভেট কোডের বিরুদ্ধে পরীক্ষা লিখতে শুরু করে এবং এটি উইন্ডোটির বাইরে চলে যায়।