সাধারণভাবে টেস্টিং কোড সহজ নয়। যদি এটি হয় তবে আমরা এটি অনেক দিন আগেই করে আসছি এবং কেবল গত 10-15 বছরেই এর সাথে এতটা চুক্তি করি না। সর্ববৃহৎ অসুবিধাগুলির মধ্যে একটি সর্বদা নির্ধারণের ক্ষেত্রে ছিল যে কোডটি কীভাবে সংহতভাবে লেখা হয়েছে, এবং ভালভাবে তৈরি করা হয়েছে, এবং এনক্যাপসুলেশন না ভেঙে পরীক্ষাযোগ্য। বিডিডি প্রিন্সিপাল পরামর্শ দেয় যে আমরা আচরণের দিকে প্রায় পুরোপুরি মনোনিবেশ করি এবং কিছু উপায়ে মনে হয় যে আপনাকে এত বড় ডিগ্রিতে অভ্যন্তরীণ বিবরণগুলি নিয়ে সত্যই চিন্তা করার দরকার নেই, তবে এটি প্রায়শই জিনিসগুলি পরীক্ষা করা বেশ কঠিন করে তুলতে পারে যদি সেখানে থাকে অনেক গোপনীয় পদ্ধতিতে অনেকগুলি ব্যক্তিগত পদ্ধতি যা "স্টাফ" করে, কারণ এটি আরও পাবলিক পর্যায়ে সমস্ত সম্ভাব্য ফলাফলকে মোকাবেলা করার জন্য আপনার পরীক্ষার সামগ্রিক জটিলতা বাড়িয়ে তুলতে পারে।
ঠাট্টা-বিদ্রূপ নির্দিষ্ট পরিমাণে সহায়তা করতে পারে তবে আবার বেশিরভাগ ক্ষেত্রে বাহ্যিকভাবে দৃষ্টি নিবদ্ধ করা হয়। ডিপেন্ডেন্সি ইনজেকশন আবারও বেশ ভালভাবে মক বা টেস্ট দ্বিগুণ হয়ে কাজ করতে পারে তবে এটির প্রয়োজনও হতে পারে আপনি ইন্টারফেসের মাধ্যমে বা সরাসরিভাবে উপাদানগুলি উন্মোচিত করতে পারেন যা আপনি অন্যথায় লুকিয়ে থাকতে পছন্দ করেছেন - আপনি যদি চান তবে এটি বিশেষভাবে সত্য আপনার সিস্টেমের মধ্যে নির্দিষ্ট ক্লাস সম্পর্কে সুরক্ষার একটি দুর্দান্ত পাগল রয়েছে have
আমার জন্য, জুরিটি আরও সহজে পরীক্ষার জন্য আপনার ক্লাসগুলি ডিজাইন করতে হবে কিনা সে সম্পর্কে এখনও বাইরে still লিগ্যাসি কোড বজায় রাখার সময় নিজেকে নতুন পরীক্ষা দেওয়ার প্রয়োজন মনে করলে এটি সমস্যা তৈরি করতে পারে। আমি স্বীকার করি যে আপনি কোনও সিস্টেমে একেবারে সমস্ত কিছু পরীক্ষা করতে সক্ষম হওয়া উচিত, তবুও আমি কোনও শ্রেণীর ব্যক্তিগত ইন্টার্নালগুলি - এমনকি পরোক্ষভাবে - এক্সপোজ করার ধারণাটি পছন্দ করি না, যাতে আমি তাদের জন্য একটি পরীক্ষা লিখতে পারি।
আমার জন্য, সমাধানটি সর্বদা একটি যথাযথ বাস্তববাদী পদ্ধতির গ্রহণ করা এবং প্রতিটি নির্দিষ্ট পরিস্থিতির সাথে মানিয়ে নেওয়ার জন্য বেশ কয়েকটি কৌশল একত্রিত করা ছিল। আমি আমার পরীক্ষাগুলির অভ্যন্তরীণ বৈশিষ্ট্য এবং আচরণগুলি প্রকাশ করতে অনেক উত্তরাধিকারসূত্রে পরীক্ষার দ্বিগুণ ব্যবহার করি। আমি আমার ক্লাসগুলির সাথে সংযুক্ত হতে পারে এমন সমস্ত বিষয়কে উপহাস করি এবং যেখানে এটি আমার ক্লাসগুলির সুরক্ষার সাথে কোনও আপস করে না, আমি পরীক্ষার উদ্দেশ্যে আচরণগুলিকে ওভাররাইড বা ইনজেক্ট করার একটি উপায় সরবরাহ করব। এমনকি কোডটি পরীক্ষার ক্ষমতা বাড়ানোর ক্ষেত্রে এটি আরও ইভেন্ট-চালিত ইন্টারফেস সরবরাহ করার বিষয়টি বিবেচনা করব
যেখানে আমি কোনও "অকেটেস্টেবল" কোড পাই সেখানে আমি দেখতে চাই যে আমি জিনিসগুলিকে আরও পরীক্ষামূলক করে তোলার জন্য চুল্লী করতে পারি কিনা। যেখানে আপনার প্রচুর প্রাইভেট কোড পর্দার জিনিসগুলির আড়ালে লুকিয়ে রয়েছে, প্রায়শই আপনি নতুন ক্লাসগুলি ভেঙে যাওয়ার জন্য অপেক্ষা করতে পারেন। এই ক্লাসগুলি অভ্যন্তরীণভাবে ব্যবহৃত হতে পারে তবে প্রায়শই কম ব্যক্তিগত আচরণের সাথে স্বাধীনভাবে পরীক্ষা করা যেতে পারে এবং প্রায়শই পরে অ্যাক্সেস এবং জটিলতার কম স্তর থাকে। তবে আমি একটি বিষয় এড়াতে খেয়াল রাখি যা অন্তর্নিহিত পরীক্ষার কোড সহ প্রডাকশন কোডটি লিখতে হয় "এটি " টেস্ট লগস " তৈরি করা লোভনীয় হতে পারে যার ফলে এরূপ ভয়াবহতা অন্তর্ভুক্ত থাকে if testing then ...
, যা কোনও পরীক্ষার সমস্যাটিকে সম্পূর্ণরূপে ডিকনস্ট্রাক্টড এবং অসম্পূর্ণভাবে সমাধান করা যায় না বলে নির্দেশ করে।
জেরার্ড মেসারোসের এক্স ইউনাইট টেস্ট প্যাটার্নস বইটি পড়তে আপনার পক্ষে সহায়ক হতে পারে , যা এখানে can ুকতে পারার চেয়ে আরও বিস্তৃতভাবে এই ধরণের সামগ্রীকে কভার করে। আমি সম্ভবত তার পরামর্শ মতো সবকিছুই করি না তবে এটি মোকাবেলা করার জন্য কয়েকটি কৌশলগত পরীক্ষার পরিস্থিতি পরিষ্কার করতে সহায়তা করে। দিনের শেষে, আপনি এখনও আপনার পছন্দসই ডিজাইন প্রয়োগ করার সময় আপনার পরীক্ষার প্রয়োজনীয়তাগুলি পূরণ করতে সক্ষম হতে চান এবং কোথায় আপনাকে আপস করতে হবে তা ঠিক করার জন্য এটি সমস্ত বিকল্পের আরও ভাল বোঝার জন্য সহায়তা করে।