আমার সবসময় অভ্যাস লেভেল কোডটি ফ্রেমওয়ার্ক লেভেল কোড থেকে আলাদা করার চেষ্টা করার অভ্যাস রয়েছে, তাই আপনি যে সমস্যাটি প্রায়শই বর্ণনা করছেন তা আমি আমার মুখোমুখি হয়েছি: আপনি সাধারণত চান যে কোনও অ্যাপ্লিকেশন স্তরের কোড পরীক্ষা করা শুরু হওয়ার আগেই সমস্ত কাঠামো স্তরের কোড পরীক্ষা করা উচিত to । এছাড়াও, এমনকি ফ্রেমওয়ার্ক লেভেল কোডের মধ্যেও কিছু মৌলিক কাঠামো মডিউল থাকে যা অন্য সমস্ত ফ্রেমওয়ার্ক মডিউল দ্বারা ব্যবহৃত হয় এবং যদি কিছু মৌলিক ক্ষেত্রে ব্যর্থ হয় তবে অন্য কিছু পরীক্ষা করার সত্যিকার অর্থে কোনও লাভ নেই।
দুর্ভাগ্যক্রমে, টেস্টিং ফ্রেমওয়ার্কগুলি পরিশোধনকারীদের তাদের সৃষ্টিগুলি কীভাবে ব্যবহার করা হয় তা সম্পর্কে কিছুটা কঠোর ধারণা থাকতে পারে এবং সেগুলি ধারণাগুলি থেকে সুরক্ষিত হয়, যখন যারা তাদের ফ্রেমওয়ার্ক ব্যবহার করেন তারা বিনা প্রশ্নবিদ্ধ উদ্দেশ্যপ্রণোদিত ব্যবহারকে মেনে নেন to এটি সমস্যাযুক্ত, কারণ এটি পরীক্ষা-নিরীক্ষা ও উদ্ভাবনকে দমন করে। আমি অন্য সবার সম্পর্কে জানি না, তবে আমি বেআইনীভাবে কিছু করার চেষ্টা করার স্বাধীনতা অর্জন করতে পছন্দ করব এবং স্বাধীনতা না পেয়ে বরং ফলাফলগুলি প্রতিষ্ঠিত পদ্ধতির চেয়ে ভাল বা খারাপ কিনা তা আমার নিজের জন্য দেখুন would জিনিসগুলিকে প্রথম স্থানে করুন।
সুতরাং, আমার মতে, পরীক্ষার নির্ভরতাগুলি একটি দুর্দান্ত জিনিস হতে পারে এবং তার পরিবর্তে, পরীক্ষাগুলি কার্যকর করা হবে এমন ক্রমটি নির্দিষ্ট করার ক্ষমতাটি পরবর্তী সেরা জিনিস হবে।
আদেশের পরীক্ষাগুলির ইস্যুটি সমাধান করার একমাত্র উপায় হ'ল সতর্কতার সাথে নামকরণ করা, যাতে বর্ণানুক্রমিক ক্রমে পরীক্ষাগুলি চালানোর জন্য ফ্রেমওয়ার্কগুলির পরীক্ষার প্রবণতাটি কাজে লাগানো যায়।
আমি জানি না যে এটি ভিজ্যুয়াল স্টুডিওতে কীভাবে কাজ করে, কারণ আমি সি # এর সাথে বিস্তৃত পরীক্ষার সাথে জড়িত কিছু এখনও করতে পেরেছি, তবে বিশ্বের জাভা অংশে এটি নিম্নরূপে কাজ করে: একটি প্রকল্পের উত্স ফোল্ডারের অধীনে আমাদের সাধারণত দুটি সাবফোল্ডার থাকে, একটিতে "মেইন" বলা হয়, যার মধ্যে প্রোডাকশন কোড থাকে এবং একজনকে "টেস্ট" বলা হয়, এতে টেস্টিং কোড থাকে। "মূল" এর অধীনে আমাদের একটি ফোল্ডার স্তরক্রম রয়েছে যা আমাদের উত্স কোডের প্যাকেজ শ্রেণিবিন্যাসের সাথে ঠিক অনুরূপ। জাভা প্যাকেজগুলি প্রায় সি # নেমস্পেসের সাথে মিল রয়েছে। সি # এর জন্য আপনাকে নামের স্থানের স্তরক্রমের সাথে ফোল্ডার স্তরক্রমের সাথে মেলে না, তবে এটি করার পরামর্শ দেওয়া হচ্ছে।
এখন, জাভা জগতের লোকেরা সাধারণত যা করেন তা হ'ল "টেস্ট" ফোল্ডারের অধীনে তারা "মূল" ফোল্ডারের অধীনে পাওয়া ফোল্ডার স্তরক্রমকে মিরর করে, যাতে প্রতিটি পরীক্ষাটি যে শ্রেণীর পরীক্ষায় পরীক্ষিত হয় ঠিক সেই একই প্যাকেজে থাকে। এর পিছনে যুক্তিটি হ'ল প্রায়শই টেস্টিং ক্লাসটি ক্লাসের প্যাকেজ-প্রাইভেট সদস্যদের পরীক্ষার অধীনে প্রবেশের প্রয়োজন হয়, তাই পরীক্ষার ক্লাসটি পরীক্ষার অধীনে থাকা ক্লাসের মতোই প্যাকেজে থাকতে হবে। বিশ্বের সি # সাইডে নেমস্পেস-লোকাল ভিজিবিলিটি বলে কোনও জিনিস নেই, সুতরাং ফোল্ডার হায়ারার্কিগুলি মিরর করার কোনও কারণ নেই, তবে আমি মনে করি যে সি # প্রোগ্রামাররা তাদের ফোল্ডারগুলি গঠনের ক্ষেত্রে একই শৃঙ্খলা কম-বেশি অনুসরণ করেন।
যাই হোক না কেন, আমি পরীক্ষার ক্লাসগুলিকে পরীক্ষার দিক থেকে ক্লাসের স্থানীয় প্যাকেজ-প্যাকেজ-স্থানীয় সদস্যদের অ্যাক্সেসের অনুমতি দেওয়ার এই পুরো ধারণাটি পাই, কারণ আমি ইন্টারফেসগুলি পরীক্ষা করি, বাস্তবায়ন নয় not সুতরাং, আমার পরীক্ষাগুলির ফোল্ডার শ্রেণিবিন্যাসে আমার প্রোডাকশন কোডের ফোল্ডার স্তরক্রমটি মিরর করতে হবে না।
সুতরাং, আমি যা করি তা হ'ল আমি আমার পরীক্ষার ফোল্ডারগুলি (অর্থাত প্যাকেজগুলি) এর নাম নীচে রেখেছি:
t001_SomeSubsystem
t002_SomeOtherSubsystem
t003_AndYetAnotherSubsystem
...
এটি গ্যারান্টি দেয় যে "সোমারসুবসিস্টেম" এর সমস্ত পরীক্ষা "সামোথারস্বেস্ট সিস্টেম" এর জন্য সমস্ত পরীক্ষার আগেই কার্যকর করা হবে, যার ফলস্বরূপ "AndYetAnotherSubs systemm" এর জন্য সমস্ত পরীক্ষার আগেই মৃত্যুদন্ড কার্যকর করা হবে, এবং আরও অনেক কিছু।
একটি ফোল্ডারের মধ্যে পৃথক পরীক্ষার ফাইলগুলির নাম নীচে দেওয়া হয়:
T001_ThisTest.java
T002_ThatTest.java
T003_TheOtherTest.java
অবশ্যই এটি প্রচুর পরিমাণে সহায়তা করে যে আধুনিক আইডিইগুলির মধ্যে শক্তিশালী রিফ্যাক্টরিং ক্ষমতা রয়েছে যা আপনাকে পুরো কয়েকটি প্যাকেজগুলি (এবং সমস্ত উপ-প্যাকেজগুলি, এবং সমস্ত কোড যা সেগুলিকে উল্লেখ করে) কেবল কয়েক ক্লিক এবং কীস্ট্রোকের সাথে নাম পরিবর্তন করতে দেয়।