যখন প্রোডাক্ট ডাটাবেসে সম্পত্তিটি সংজ্ঞায়িত করা হয় (বা পরীক্ষার জন্য একটি ক্লোন), এটি কোনও ইউনিট পরীক্ষা নয় । একটি ইউনিট পরীক্ষা কাজের ইউনিট পরীক্ষা করে এবং কাজ করার জন্য কোনও নির্দিষ্ট বাহ্যিক অবস্থার প্রয়োজন হয় না। এটি ধরে নেওয়া হয় যে Offer1
কেবলমাত্র পুরুষের অফার হিসাবে ডেটাবেজে সংজ্ঞায়িত হয়েছে। এটি বাহ্যিক অবস্থা। সুতরাং এটি একটি আরও বেশি সংহতকরণ পরীক্ষা , বিশেষত একটি সিস্টেম বা গ্রহণযোগ্যতা পরীক্ষা। দ্রষ্টব্য যে গ্রহণযোগ্যতা পরীক্ষাগুলি প্রায়শই স্ক্রিপ্ট হয় না (পরীক্ষার কাঠামোয় চালানো হয় না তবে মানুষ দ্বারা ম্যানুয়ালি সম্পাদিত হয়)।
if
বিবৃতি সহ যখন ডোমেন মডেলটিতে সম্পত্তিটি সংজ্ঞায়িত করা হয় , একই পরীক্ষাটি ইউনিট পরীক্ষা unit এবং এটি ভঙ্গুর হতে পারে। তবে আসল সমস্যাটি হচ্ছে কোডটি ভঙ্গুর। সাধারণ নিয়ম হিসাবে, ব্যবসায়ের আচরণটি হার্ড কোডিংয়ের পরিবর্তে কনফিগারযোগ্য হলে আপনার কোডটি আরও বেশি স্থিতিস্থাপক হবে। কারণ একটি ছোট কোডিং ত্রুটি ঠিক করার জন্য একটি ভিড় মোতায়েন বিরল হওয়া উচিত। তবে বিজ্ঞপ্তি ছাড়াই ব্যবসায়ের প্রয়োজনীয় পরিবর্তন হ'ল মঙ্গলবার (এমন কিছু যা সাপ্তাহিকভাবে ঘটে)।
আপনি পরীক্ষা চালানোর জন্য একটি ইউনিট পরীক্ষার কাঠামো ব্যবহার করছেন। তবে ইউনিট পরীক্ষার ফ্রেমওয়ার্কগুলি ইউনিট পরীক্ষা চালানোর মধ্যে সীমাবদ্ধ নয়। তারা পাশাপাশি ইন্টিগ্রেশন পরীক্ষা চালাতে ও করতে পারে।
আপনি যদি ইউনিট পরীক্ষা লিখতে থাকেন তবে আপনি উভয় person
এবং offer1
গ্রাউন্ড থেকে ডেটাবেস স্থিতির উপর কোনও নির্ভরতা ছাড়াই তৈরি করবেন । কিছুটা এইরকম
[Fact]
public void ReturnsFalseWhenGivenAPersonWithAGenderOfFemale()
{
var personId = Guid.NewGuid();
var gender = "F";
var person = new Person(personId, gender);
var id = Guid.NewGuid();
var offer1 = new Offer1(id, "ReturnsFalseWhenGivenAPersonWithAGenderOfFemale");
offer1.markLimitedToGender("M");
Assert.False(offer1.IsEligible(person));
}
মনে রাখবেন যে ব্যবসায়ের যুক্তির ভিত্তিতে এটি পরিবর্তন হয় না। এটি জোর দিয়ে বলছে না যে মহিলা offer1
প্রত্যাখ্যান করে। এটি এমন offer1
অফার তৈরি করছে যা মহিলাদের প্রত্যাখ্যান করে।
আপনি পরীক্ষার অংশ হিসাবে ডাটাবেসটি তৈরি এবং কনফিগার করতে পারেন। সি # তে, নুনিট ব্যবহার করে বা জাভার জাউনিত ব্যবহার করে আপনি কোনও Setup
পদ্ধতিতে ডাটাবেস সেট আপ করবেন । সম্ভবত আপনার পরীক্ষার কাঠামোর অনুরূপ ধারণা রয়েছে। এই পদ্ধতিতে, আপনি এসকিউএল দিয়ে ডাটাবেসে রেকর্ড সন্নিবেশ করতে পারে।
আপনার যদি কোড লিখতে কঠিন হয় যা প্রোডাকশন ডাটাবেসের জন্য একটি পরীক্ষামূলক ডাটাবেসকে প্রতিস্থাপন করে, যা আপনার আবেদনে পরীক্ষার দুর্বলতা বলে মনে হচ্ছে sounds পরীক্ষার জন্য, নির্ভরতা ইঞ্জেকশনের মতো এমন কিছু ব্যবহার করা ভাল যা প্রতিস্থাপনের অনুমতি দেয়। তারপরে আপনি এমন পরীক্ষাগুলি লিখতে পারেন যা বর্তমান ব্যবসার বিধিগুলির তুলনায় স্বতন্ত্র।
এর একটি পার্শ্ব সুবিধা এটি হ'ল ব্যবসায়ের মালিকের পক্ষে প্রায়শই সহজ হয় (প্রয়োজনীয় কর্পোরেট মালিক নয়, কর্পোরেট প্রশাসনের অধীনে এই পণ্যটির জন্য দায়বদ্ধ ব্যক্তির মতো) সরাসরি ব্যবসার বিধিগুলি কনফিগার করতে পারেন। কারণ আপনার যদি এই জাতীয় প্রযুক্তিগত কাঠামো থাকে তবে ব্যবসায়ের মালিককে অফারটি কনফিগার করার জন্য কোনও ইউজার ইন্টারফেস (ইউআই) ব্যবহার করার অনুমতি দেওয়া সহজ। ব্যবসায়ের মালিক ইউআই-তে সীমাবদ্ধতা নির্বাচন করবেন এবং এটি markLimitedToGender("M")
কলটি জারি করবে । তারপরে অফারটি ডাটাবেসে স্থির থাকে, এটি এটি সংরক্ষণ করে store তবে আপনার এটি অফারটি ব্যবহার করার জন্য সঞ্চয় করতে হবে না। সুতরাং আপনার পরীক্ষাগুলি এমন অফার তৈরি এবং কনফিগার করতে পারে যা ডেটাবেজে উপস্থিত নেই।
আপনার সিস্টেমে বর্ণিত হিসাবে, ব্যবসায়ের মালিককে প্রযুক্তিগত গোষ্ঠীতে একটি অনুরোধ জানাতে হবে, যা উপযুক্ত এসকিউএল জারি করবে এবং পরীক্ষাগুলি আপডেট করবে। বা প্রযুক্তিগত গোষ্ঠীটি আপনার কোড এবং পরীক্ষাগুলি সম্পাদন করতে হবে (বা তারপরে কোডগুলি পরীক্ষা করে)। এটি একটি বরং হেভিওয়েট পদ্ধতির বলে মনে হচ্ছে। তুমি এটা করতে পার. তবে আপনার সফটওয়্যারটি (কেবলমাত্র আপনার পরীক্ষার জন্য নয়) কম পরিমাণে ভঙ্গুর হতে হবে যদি আপনাকে এটি না করতে হয়।
টিএল; ডিআর : আপনি এভাবে পরীক্ষা লিখতে পারেন, তবে আপনার সফ্টওয়্যারটি লেখার চেয়ে আপনি আরও ভাল হতে পারেন তাই আপনাকে এটি করতে হবে না।