সুতরাং, আমার কাছে একটি প্রমাণীকরণ মডিউল রয়েছে যা আমি কিছু সময় আগে লিখেছিলাম। এখন আমি আমার পথের ত্রুটিগুলি দেখছি এবং এর জন্য ইউনিট পরীক্ষা লেখছি। ইউনিট পরীক্ষা লেখার সময়, ভাল পরীক্ষার জন্য ভাল নাম এবং ভাল ক্ষেত্রগুলি নিয়ে আসতে আমার একটি কঠিন সময় কাটছে। উদাহরণস্বরূপ, আমার মত জিনিস আছে
- RequiresLogin_should_redirect_when_not_logged_in
- RequiresLogin_should_pass_through_when_logged_in
- Login_should_work_when_given_proper_credentials
ব্যক্তিগতভাবে, আমি এটি "যথাযথ" বলে মনে হলেও এটি কিছুটা কুৎসিত বলে মনে করি। আমি কেবল সেগুলি স্ক্যান করে পরীক্ষার মধ্যে পার্থক্য করতেও সমস্যা করি (কেবলমাত্র কী ব্যর্থ হয়েছে তা জানতে আমাকে প্রথমে পদ্ধতির নামটি পড়তে হবে)
সুতরাং, আমি ভেবেছিলাম যে সম্ভবত পরীক্ষাগুলি যা খাঁটি কার্যকারিতা পরীক্ষা করে সেগুলি লেখার পরিবর্তে, সম্ভবত এমন পরিস্থিতিতে এমন কিছু পরীক্ষার সংকলন লিখুন যা দৃশ্যাবলীর অন্তর্ভুক্ত।
উদাহরণস্বরূপ, এটি একটি পরীক্ষার স্টাব যার সাথে আমি এলাম:
public class Authentication_Bill
{
public void Bill_has_no_account()
{ //assert username "bill" not in UserStore
}
public void Bill_attempts_to_post_comment_but_is_redirected_to_login()
{ //Calls RequiredLogin and should redirect to login page
}
public void Bill_creates_account()
{ //pretend the login page doubled as registration and he made an account. Add the account here
}
public void Bill_logs_in_with_new_account()
{ //Login("bill", "password"). Assert not redirected to login page
}
public void Bill_can_now_post_comment()
{ //Calls RequiredLogin, but should not kill request or redirect to login page
}
}
এটা কি প্যাটার্নের শোনা? আমি গ্রহণযোগ্যতার গল্পগুলি দেখেছি এবং এরকম, তবে এটি মূলত আলাদা। বড় পার্থক্য হ'ল আমি পরীক্ষাগুলি "বলপূর্বক" করার জন্য পরিস্থিতি নিয়ে আসছি। পরিবর্তে ম্যানুয়ালি সম্ভাব্য মিথস্ক্রিয়াগুলি নিয়ে আসার চেষ্টা করার চেয়ে আমি পরীক্ষা করতে হবে need এছাড়াও, আমি জানি যে এটি ইউনিট পরীক্ষাগুলিকে উত্সাহ দেয় যা এক পদ্ধতি এবং ক্লাসের সঠিক পরীক্ষা করে না। আমি মনে করি এটি ঠিক আছে। এছাড়াও, আমি সচেতন যে এটি কমপক্ষে কিছু পরীক্ষার কাঠামোর ক্ষেত্রে সমস্যা সৃষ্টি করবে, কারণ তারা সাধারণত ধরে নেয় যে পরীক্ষাগুলি একে অপরের থেকে স্বতন্ত্র এবং অর্ডার কোনও ব্যাপার না (যেখানে এটি এই ক্ষেত্রে হবে)।
যাইহোক, এটি কি আদৌ পরামর্শমূলক প্যাটার্ন? অথবা, এটি "ইউনিট" পরীক্ষার পরিবর্তে আমার API এর ইন্টিগ্রেশন পরীক্ষার জন্য একটি উপযুক্ত ফিট হতে পারে? এটি কেবলমাত্র একটি ব্যক্তিগত প্রকল্পে, তাই আমি পরীক্ষাগুলির জন্য উন্মুক্ত যা ভাল যেতে পারে বা নাও পারে।
_test
সংযুক্তি দিয়ে যা যা পরীক্ষা করি তার নাম ব্যবহার করি এবং আমি কী ফলাফল আশা করি তা নোট করতে মন্তব্যগুলি ব্যবহার করি। যদি এটি কোনও ব্যক্তিগত প্রকল্প হয় তবে এমন কিছু স্টাইল সন্ধান করুন যার সাথে আপনি স্বাচ্ছন্দ্য বোধ করেন এবং তাতে আঁকুন।