- এই প্রশ্নটি ইউনিট টেস্টিং ফ্রেমওয়ার্কগুলি সম্পর্কে নয় ।
- এই প্রশ্নটি ইউনিট টেস্ট লেখার বিষয়ে নয় ।
- ইউটি কোডটি কোথায় লেখা হবে এবং কীভাবে / কখন / কোথায় এটি সংকলন করতে হবে এবং চালাতে হবে সে সম্পর্কে এই প্রশ্নটি ।
ইন উত্তরাধিকার কোড সঙ্গে কার্যকরভাবে কাজ করা , মাইকেল পালক asserts যে
ভাল ইউনিট পরীক্ষা ... দ্রুত চালান
এবং সেটা
একটি ইউনিট পরীক্ষা যা চালাতে সেকেন্ডের 1/10 তম লাগে। এটি একটি ধীর ইউনিট পরীক্ষা।
আমি মনে করি এই সংজ্ঞাগুলি অর্থবোধ করে। আমি আরও মনে করি যে তারা বোঝাচ্ছে যে আপনাকে ইউনিট টেস্টের একটি সেট এবং সেই কোড টেস্টগুলির একটি সেট রাখতে হবে যা আলাদাভাবে বেশি সময় নেয়, তবে আমি অনুমান করি যে আপনি কেবলমাত্র ইউনিট টেস্ট কল করার জন্য যে মূল্যটি প্রদান করেন তা দ্রুত চলে (খুব) ।
স্পষ্টতই সি ++ তে সমস্যা হ'ল আপনার ইউনিট টেস্ট ( গুলি ) চালানোর জন্য আপনাকে এই করতে হবে:
- আপনার কোড সম্পাদনা করুন (আপনি কোন "চক্র" এর উপর নির্ভর করে উত্পাদন বা ইউনিট পরীক্ষা)
- কম্পাইল
- লিংক
- স্টার্ট ইউনিট পরীক্ষা এক্সিকিউটেবল ( গুলি )
সম্পাদনা করুন (অদ্ভুত কাছের ভোটের পরে) : বিশদে যাওয়ার আগে, আমি এখানে বিষয়টির সংক্ষিপ্তসার চেষ্টা করব:
সি ++ ইউনিট টেস্ট কোড কীভাবে কার্যকরভাবে সংগঠিত করা যায়, যাতে (পরীক্ষা) কোডটি সম্পাদনা করা এবং পরীক্ষার কোড চালানো উভয়ই দক্ষ?
প্রথম সমস্যা তারপর সিদ্ধান্ত নিতে হয় যেখানে যাতে ইউনিট টেস্ট কোড লাগাতে:
- এটি সম্পাদনা করা এবং সম্পর্কিত উত্পাদন কোডের সাথে মিশ্রিত করা এটি "প্রাকৃতিক"।
- আপনার বর্তমানে পরিবর্তিত ইউনিটের জন্য সংকলন চক্র শুরু করা সহজ / দ্রুত
দ্বিতীয় , সম্পর্কিত, সমস্যা তাহলে কি তাই কম্পাইল করার যে প্রতিক্রিয়া ক্ষণিক হয়।
চরম বিকল্প:
- প্রতিটি ইউনিট-টেস্ট-টেস্ট-ইউনিট পৃথক সিপিপি ফাইলে বাস করে এবং এই সিপিপি ফাইলটি + পৃথকভাবে সংযুক্ত করা হয় (উত্স কোড ইউনিট ফাইলের সাথে এটি পরীক্ষা করে) একটি একক এক্সিকিউটেবল যা এরপরে এই এক ইউনিট পরীক্ষা চালায়।
- (+) এটি একক টেস্ট ইউনিটের জন্য প্রারম্ভকালীন (সংকলন + লিঙ্ক!) সময়কে ন্যূনতম করে।
- (+) পরীক্ষাটি সুপার দ্রুত চলে, কারণ এটি কেবল একটি ইউনিট পরীক্ষা করে।
- (-) পুরো স্যুটটি কার্যকর করতে এক হাজার কোটি প্রক্রিয়া শুরু করতে হবে। পরিচালনা করতে সমস্যা হতে পারে।
- (-) প্রক্রিয়া শুরু করার ওভারহেড দৃশ্যমান হয়ে যাবে
- অন্য দিকটি হ'ল - স্থির - প্রতি টেস্টে একটি সিপিপি ফাইল, তবে সমস্ত পরীক্ষার সিপিপি ফাইল (তারা যে কোডটি পরীক্ষা করে তা একত্রে) এক্সিকিউটেবলের সাথে লিঙ্কযুক্ত (প্রতি মডিউল / প্রতি প্রকল্প / আপনার পছন্দ চয়ন করুন)।
- (+) সংকলনের সময়টি এখনও ঠিক থাকবে কারণ কেবল পরিবর্তিত কোডই সংকলন করবে।
- (+) পুরো স্যুটটি কার্যকর করা সহজ, কারণ চালানোর জন্য কেবলমাত্র এক এক্সি আছে।
- (-) স্যুটটি লিঙ্ক করতে যুগে যুগে সময় লাগবে, কারণ যে কোনও বস্তুর প্রতিটি সংশোধন পুনরায় লিঙ্ককে ট্রিগার করবে।
- (-) (?) স্যুটটি চালাতে আরও বেশি সময় লাগবে, যদিও সমস্ত ইউনিট টেস্ট দ্রুত হয়, সময়টি ঠিক হওয়া উচিত।
তাহলে, আসল বিশ্বের সি ++ ইউনিট টেস্টগুলি কীভাবে পরিচালনা করা হয়? যদি আমি কেবল সেই জিনিসটি রাত্রি / ঘন্টা প্রতি চালিত করি তবে দ্বিতীয় অংশটি আসলে কিছু যায় আসে না, তবে প্রথম অংশটি, অর্থাত্ ইউটি কোডটি কীভাবে উত্পাদন কোডে "দম্পতি" করা যায়, যাতে বিকাশকারীদের উভয়কেই রাখা "প্রাকৃতিক" হয় আমার মনে হয় সবসময় ফোকাস। (এবং যদি বিকাশকারীদের ফোকাসে ইউটি কোড থাকে তবে তারা এটি চালাতে চাইবে, যা আমাদের দ্বিতীয় ভাগে ফিরে আসে brings)
বাস্তব বিশ্বের গল্প এবং অভিজ্ঞতা প্রশংসা!
নোট:
- এই প্রশ্নটি ইচ্ছাকৃতভাবে অনির্দিষ্ট প্ল্যাটফর্ম এবং মেক / প্রজেক্ট সিস্টেম ছেড়ে যায়।
- প্রশ্নগুলি ট্যাগ করা UT এবং C ++ শুরু করার জন্য দুর্দান্ত জায়গা, তবে দুর্ভাগ্যক্রমে অনেকগুলি প্রশ্ন এবং বিশেষত উত্তরগুলি খুব বেশি বিবরণে বা নির্দিষ্ট ফ্রেমওয়ার্কগুলিতে নিবদ্ধ।
- কিছুক্ষণ আগে, আমি বুস্ট ইউনিট পরীক্ষার কাঠামোর বিষয়ে অনুরূপ প্রশ্নের উত্তর দিয়েছি । আমি এই কাঠামোর "বাস্তব", দ্রুত ইউনিট টেস্টগুলির অভাব বোধ করি। এবং আমি অন্য প্রশ্নটি খুব সংকীর্ণ দেখতে পাই, তাই এই নতুন প্রশ্নটি।
:-(
আপনি এই ফোরামে না থাকলে এই জাতীয় প্রশ্নের উত্তর সন্ধানের জন্য কোথায় অনুমান?
Pipeline<A,B>.connect(Pipeline<B,C>)
এমন সংকলন করা Pipeline<A,B>.connect(Pipeline<C,D>)
উচিত যেখানে সংকলন করা উচিত নয়: প্রথম পর্যায়ে আউটপুট টাইপ দ্বিতীয় স্তরের ইনপুট ধরণের সাথে বেমানান।