আমি এমন একটি প্রকল্পে কাজ করছি যেখানে শ্রেণীর অভ্যন্তরীণ কলগুলি স্বাভাবিক তবে ফলাফলগুলি বহুগুণ সাধারণ মান। উদাহরণ ( বাস্তব কোড নয় ):
public boolean findError(Set<Thing1> set1, Set<Thing2> set2) {
if (!checkFirstCondition(set1, set2)) {
return false;
}
if (!checkSecondCondition(set1, set2)) {
return false;
}
return true;
}
এই ধরণের কোডের জন্য ইউনিট পরীক্ষাগুলি লেখা সত্যিই শক্ত কারণ আমি কেবল কন্ডিশন সিস্টেমটি পরীক্ষা করতে চাই এবং প্রকৃত শর্তগুলির বাস্তবায়ন নয়। (আমি এটি পৃথক পরীক্ষায় করি)) আসলে আমি শর্তগুলি বাস্তবায়িত করে এমন ফাংশনগুলি পাস করি এবং পরীক্ষাগুলিগুলিতে আমি কেবল কিছু উপহাস সরবরাহ করি তবে ভাল হয়। এই পদ্ধতির সমস্যাটি হ'ল শোরগোল: আমরা জেনেরিকগুলি প্রচুর ব্যবহার করি ।
একটি কার্যনির্বাহী সমাধান; তবে, পরীক্ষিত বস্তুকে গুপ্তচর বানানো এবং অভ্যন্তরীণ ফাংশনগুলিতে কলগুলি উপহাস করা।
systemUnderTest = Mockito.spy(systemUnderTest);
doReturn(true).when(systemUnderTest).checkFirstCondition(....);
এখানে উদ্বেগটি হ'ল এসইউটির বাস্তবায়ন কার্যকরভাবে পরিবর্তিত হয়েছে এবং পরীক্ষাগুলি বাস্তবায়নের সাথে সুসংগত রাখতে সমস্যা হতে পারে। এটা কি সত্য? অভ্যন্তরীণ পদ্ধতির কলগুলির এই সর্বনাশ এড়াতে কি সর্বোত্তম অনুশীলন রয়েছে?
নোট করুন যে আমরা একটি অ্যালগরিদমের অংশগুলির বিষয়ে কথা বলছি, তাই এটি বেশ কয়েকটি শ্রেণিতে বিভক্ত করা পছন্দসই সিদ্ধান্ত নাও হতে পারে।