ব্যক্তিগত পদ্ধতিগুলির পরীক্ষা তাদের জটিলতার উপর নির্ভর করবে; কিছু এক লাইনের ব্যক্তিগত পদ্ধতিগুলি পরীক্ষার অতিরিক্ত প্রয়াসকে সত্যই ওয়ারেন্ট দেয় না (এটি পাবলিক পদ্ধতি সম্পর্কেও বলা যেতে পারে), তবে কিছু ব্যক্তিগত পদ্ধতি জনসাধারণের পদ্ধতির মতোই জটিল এবং পাবলিক ইন্টারফেসের মাধ্যমে পরীক্ষা করা কঠিন হতে পারে।
আমার পছন্দের কৌশলটি হ'ল বেসরকারী পদ্ধতি প্যাকেজটিকে ব্যক্তিগত করা, যা একই প্যাকেজে ইউনিট পরীক্ষার অ্যাক্সেসের অনুমতি দেবে তবে এটি অন্য সমস্ত কোড থেকে আবশ্যক। এটি জটিল লজিকের সমস্ত অংশ কভার করার জন্য পাবলিক মেথড টেস্টের উপর নির্ভর না করে সরাসরি প্রাইভেট মেথড লজিক পরীক্ষা করার সুবিধা দেবে।
এটি যদি গুগল পেয়ারা লাইব্রেরিতে @ ভিজিবলফোর্ড টেস্টিং টীকা সহ জোড় করে তৈরি করা হয় তবে আপনি এই প্যাকেজটি ব্যক্তিগত পদ্ধতিটিকে কেবল পরীক্ষার জন্য দৃশ্যমান হিসাবে চিহ্নিত করছেন এবং অন্য কোনও শ্রেণি দ্বারা এটি কল করা উচিত নয়।
এই কৌশলটির বিরোধীরা যুক্তি দেখান যে এটি এনক্যাপসুলেশনটি ভেঙে দেবে এবং একই প্যাকেজের কোডগুলিতে ব্যক্তিগত পদ্ধতিগুলি খুলবে। যদিও আমি সম্মত হই যে এটি এনক্যাপসুলেশনটি ভেঙে দেয় এবং অন্য শ্রেণীর কাছে ব্যক্তিগত কোড খোলায়, আমি যুক্তি দিয়েছি যে জটিল যুক্তিকে পরীক্ষা করা কঠোর এনক্যাপসুলেশনের চেয়ে বেশি গুরুত্বপূর্ণ এবং প্যাকেজের ব্যক্তিগত পদ্ধতিগুলি যা পরীক্ষার জন্য দৃশ্যমান হিসাবে চিহ্নিত করা হয় কেবল তা ব্যবহারকারীর দায়বদ্ধ হতে হবে না কোড বেস ব্যবহার এবং পরিবর্তন করা।
পরীক্ষার আগে ব্যক্তিগত পদ্ধতি:
private int add(int a, int b){
return a + b;
}
প্যাকেজ ব্যক্তিগত পদ্ধতি পরীক্ষার জন্য প্রস্তুত:
@VisibleForTesting
int add(int a, int b){
return a + b;
}
দ্রষ্টব্য: একই প্যাকেজে পরীক্ষা করা একই শারীরিক ফোল্ডারে রাখার সমতুল্য নয়। আপনার মূল কোড এবং টেস্ট কোডকে পৃথক ফিজিক্যাল ফোল্ডারের কাঠামোর মধ্যে পৃথক করা সাধারণভাবে ভাল অনুশীলন তবে এই কৌশলটি ততক্ষণ কাজ করবে যতক্ষণ ক্লাসগুলি একই প্যাকেজের মতো সংজ্ঞায়িত হয়।