ইউনিট পরীক্ষার পদ্ধতিগুলি যা সরবরাহকারীদের ওয়েব পরিষেবাগুলিকে কল করে


10

আমার একটি জনসাধারণের পদ্ধতি Send()এবং কয়েকটি ব্যক্তিগত পদ্ধতি সহ একটি ক্লাস রয়েছে । এটি বেশ কয়েকটি ওয়েবসার্ভিসকে কল করে এবং পুনরাবৃত্তিটি প্রক্রিয়া করে। প্রসেসিং ব্যক্তিগত পদ্ধতিতে সম্পন্ন করা হয়।

আমি কোডটি ইউনিট করতে চাই। আমার বোধগম্যতা হচ্ছে ইউনিট পরীক্ষাগুলিতে আমার কোডকে বিচ্ছিন্নভাবে পরীক্ষা করা উচিত (অর্থাত সরবরাহকারী প্রতিক্রিয়াগুলি মক আপ)।

আমি আরও বিশ্বাস করি যে বেসরকারী পদ্ধতিগুলির ইউনিট পরীক্ষা করার প্রয়োজন হবে না তবে আমি যদি কেবলমাত্র প্রেরণ () পদ্ধতিটি পরীক্ষা করি তবে আমার কোডটি বিচ্ছিন্নভাবে পরীক্ষা করা হচ্ছে না এবং সরবরাহকারীর অনুরণনের উপর নির্ভরশীল।

এরপরে কি আমার ব্যক্তিগত পদ্ধতিগুলি জনসমক্ষে করা উচিত যাতে আমি তাদের প্রতিকূল প্রতিক্রিয়ার সাথে পরীক্ষা করতে পারি? এটা খারাপ অনুশীলন বলে মনে হচ্ছে যেহেতু কেবলমাত্র ক্লাসের তাদের কল করা উচিত।

ক্ষমাপ্রার্থী যদি এটি একটি প্রাথমিক প্রশ্ন, তবে ইউনিট পরীক্ষায় আমি মোটামুটি নতুন।

আমি সি # এবং ভিএস 2010 ব্যবহার করছি


আপনি যদি কোনও ব্যক্তিগত পদ্ধতি পরীক্ষা না করেন তবে এটি কীভাবে কাজ করে তা আপনি কীভাবে জানবেন?
ব্রায়ান ওকলে

1
@ ব্রায়ান ওকলে আপনাকে জানার দরকার নেই যে একটি ব্যক্তিগত পদ্ধতি কাজ করে, এটি ব্যক্তিগত private আপনি জানেন যে এটি কাজ করে কারণ এটিকে যে সর্বজনীন পদ্ধতিগুলি বলে তাদের পরীক্ষাগুলি পাস করে।
StuperUser

@ ব্রায়ান ওকলির লিঙ্কটি একবার দেখুন
টম স্কুইয়ার্স

হাই টম, আমি লিঙ্কটি আরও বিশিষ্ট করার জন্য আপডেট করেছি এবং লিঙ্ক পাঠ্যটিকে এর লক্ষ্য প্রতিবিম্বিত করতে। রোলব্যাক নির্দ্বিধায় দয়া করে।
StuperUser

উত্তর:


18

ফলাফলগুলি প্রক্রিয়াজাতকরণের কোড থেকে ওয়েব পরিষেবাদিগুলির (যেমন ডেটা প্রেরণ এবং গ্রহণ করা) কোডের কোডকে আলাদা করা উচিত। পরের কোডটি একটি পৃথক শ্রেণীতে সরান, প্রয়োজনীয় পদ্ধতিগুলি জনসাধারণের করে। তারপরে আপনি বাহ্যিক নির্ভরতা থেকে বিচ্ছিন্ন হয়ে সহজেই প্রক্রিয়াজাতকরণ যুক্তি পরীক্ষা করতে পারেন।

এটির মাধ্যমে আপনি নিজের কোডকে একক দায়িত্বের নীতিমালা অনুসারে পরিণত করেন । থাম্বের একটি সাধারণ নিয়ম হিসাবে, ব্যক্তিগত পদ্ধতিগুলি পরীক্ষা করার প্রয়োজনীয়তা বোধ করা প্রায়শই একটি ইঙ্গিত দেয় যে শ্রেণীর অনেক বেশি দায়িত্ব রয়েছে, সুতরাং একাধিক ক্লাসে রিফেক্টর করা উচিত।


3

আমি মনে করি এই জাতীয় নির্ভরতা ( সরবরাহকারীদের ওয়েবসার্চিং কলিং ) এর সাথে পরীক্ষা একটি ইউনিট পরীক্ষার পরিবর্তে একটি ইন্টিগ্রেশন পরীক্ষা।


3

অন্যরা যেমন বলেছে, আপনার ইউনিট পরীক্ষাগুলির যদি বাহ্যিক নির্ভরতা থাকে যেমন ওয়েব পরিষেবাদি বা ডাটাবেস কলগুলি তবে সেগুলি মোটেই ইউনিট পরীক্ষা নয়, সেগুলি ইন্টিগ্রেশন টেস্ট।

সত্য ইউনিট পরীক্ষাগুলি বাইরের উপাদানগুলির বাইরে স্বাধীনভাবে চলতে পারে যা তারা পরীক্ষার উদ্দেশ্যে এবং সেগুলি পরিবেশ নির্বিশেষে পুনরাবৃত্তিযোগ্য হওয়া উচিত। যদি বাইরের ওয়েব পরিষেবাগুলি হ্রাস পায় তবে আপনার ইউনিট পরীক্ষাটি ব্যর্থ হওয়া উচিত নয়।

আমরা একটি উপহাসের ফ্রেমওয়ার্ক ব্যবহার করে এটি পেতে পারি। মক অবজেক্টস আমাদের একটি উপাদানটির একটি মক তৈরি করতে দেয় যাতে আমাদের ইউনিট পরীক্ষায় থাকা উপাদানগুলি বাস্তবের পরিবর্তে এই মক অবজেক্টগুলি ব্যবহার করে। আমরা পরীক্ষামূলক উপাদানটিতে মক অবজেক্টগুলি ইনজেকশন করতে পারি এবং আমরা কোন যুক্তি (গুলি) প্রত্যাশা করছি তা নির্দিষ্ট করা হলে আমরা কী ফিরিয়ে আনতে চাই তা নির্দিষ্ট করতে পারি, এমনকি এটি বাদ দিয়ে আমরা কী ব্যতিক্রম চাই। আমি এই বিষয়ে আরও পড়ার পরামর্শ দিচ্ছি কারণ এটি আপনার ইউনিট পরীক্ষার নির্ভরযোগ্যতা এবং স্বাধীনতার উন্নতি করবে।

বিভিন্ন সি # উপহাসের ফ্রেমওয়ার্কে একটি ভাল পোস্টের জন্য নিম্নলিখিত এস থ্রেডটি দেখুন:

/programming/37359/what-c-mocking-framework-to-use

সম্পাদনা: পরিস্কার সংবেদনশীলদের জন্য, আমি মালিকানাধীন যে আমি DbUnit বা অন্যান্য লেনদেনের সরঞ্জামগুলি উল্লেখ করতে অবহেলা করেছি যা পরীক্ষার শেষে ডাটাবেস পরিবর্তনগুলি রোলব্যাক করতে পারে। এগুলি পুনরাবৃত্তিযোগ্য এবং জেনারেটেড পরীক্ষার ডেটা সহ পরিবেশের অজানাস্টিক হতে পারে সুতরাং এই ক্ষেত্রে একটি মকিং ফ্রেমওয়ার্ক প্রয়োজন হয় না।


কেউ কি ডাউনটোটকে ব্যাখ্যা করতে পারে? আমি পিএইচপি, আরওআর, নোএসকিউএল ডাটাবেসগুলি, সার্ভারে জাভাস্ক্রিপ্ট, অ্যাপল পণ্যগুলি বা অন্য কোনও
কল্পিত

আমি অনুমান করি যে কেউ তাদের ইউনিট পরীক্ষা "একেবারে ইউনিট পরীক্ষা নয়" বলে ডাকা পছন্দ করেনি (আমি ছিল না) :)
ড্যানিয়েল বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.