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