আমি এটি যেভাবে দেখছি, আপনার উভয়েরই সুবিধা রয়েছে এবং আপনি একটি "অসুবিধা" (sic) এ আছেন।
সুবিধাটি হ'ল আপনার এমন একটি সিস্টেম রয়েছে যা আপনি স্বাচ্ছন্দ্য বোধ করেন এবং এটি আপনার পক্ষে কার্যকর। আপনি খুশি যে এটি আপনার পণ্যের বৈধতা নিশ্চিত করেছে এবং আপনি সম্ভবত কোনও ভিন্ন কাঠামো ব্যবহার করে এমন কোনও কিছুর জন্য আপনার সমস্ত পরীক্ষার পরিবর্তন করার প্রয়াসে কোনও ব্যবসায়িক মূল্য খুঁজে পাবেন না। আপনি যদি নিজের কোডটি রিফ্যাক্টর করতে পারেন এবং আপনার পরীক্ষাগুলি পরিবর্তনগুলি গ্রহণ করতে পারে - বা আরও ভাল, আপনি যদি নিজের পরীক্ষাগুলি সংশোধন করতে পারেন এবং আপনার বিদ্যমান কোডটি পরীক্ষাগুলি পুনরায় সঞ্চার না করা পর্যন্ত ব্যর্থ হয়, তবে আপনার সমস্ত ঘাঁটি coveredাকা থাকবে। যাহোক...
ভাল ডিজাইন করা ইউনিট টেস্টিং এপিআই হওয়ার অন্যতম সুবিধা হ'ল বেশিরভাগ আধুনিক আইডিইতে প্রচুর দেশীয় সমর্থন রয়েছে। এটি হার্ড-কোর ষষ্ঠ এবং ইমাক্স ব্যবহারকারীদের উপর প্রভাব ফেলবে না যারা সেখানে ভিজ্যুয়াল স্টুডিও ব্যবহারকারীদের দিকে ঝাঁকুনি দেয় তবে যারা ভাল আইডিই ব্যবহার করেন তাদের ক্ষেত্রে আপনার পরীক্ষাগুলি ডিবাগ করার এবং তাদের মধ্যে সম্পাদন করার ক্ষমতা রয়েছে আইডিই নিজেই। এটি ভাল, তবে আপনার ব্যবহারের কাঠামোর উপর নির্ভর করে আরও বৃহত্তর সুবিধা রয়েছে এবং এটি আপনার কোডটি পরীক্ষার জন্য ব্যবহৃত ভাষায় ।
আমি যখন ভাষা বলি , আমি কোনও প্রোগ্রামিং ভাষার কথা বলি না, বরং পরিবর্তে আমি একটি সমৃদ্ধ সেট শব্দের বিষয়ে কথা বলি যা একটি সাবলীল বাক্য গঠনে আবৃত হয় যা পরীক্ষার কোডকে গল্পের মতো পড়তে বাধ্য করে। বিশেষত, আমি বিডিডি ফ্রেমওয়ার্কগুলি ব্যবহারের জন্য আইনজীবী হয়েছি । আমার ব্যক্তিগত প্রিয় ডটনেট বিডিডি এপিআই হ'ল স্টোরকিউ, তবে একই বেসিক উদ্দেশ্য সহ আরও বেশ কয়েকজন রয়েছেন, যা প্রয়োজনের নথির বাইরে একটি ধারণা নেওয়া এবং কোডটিতে কীভাবে এটি লিখিত হয় তার অনুরূপভাবে কোডে লিখতে হয়। সত্যিকারের ভাল এপিআইগুলি তবে আরও পরীক্ষার মধ্যে প্রতিটি স্বতন্ত্র বক্তব্যকে আটকে রেখে এবং সেই বিবৃতিটি সফলভাবে কার্যকর করা হয়েছে, বা ব্যর্থ হয়েছে কিনা তা নির্দেশ করে further এটি অবিশ্বাস্যরূপে দরকারী, আপনি পুরো টেস্টটি তাড়াতাড়ি ফিরে না এসে সম্পাদন করতে দেখতে পেয়েছেন, যার অর্থ আপনার ডিবাগিং প্রচেষ্টা অবিশ্বাস্যভাবে দক্ষ হয়ে ওঠে কারণ আপনি কেবলমাত্র সম্পূর্ণ মনোযোগ কেন্দ্রীকরণের প্রয়োজন ছাড়াই পরীক্ষার অংশগুলিতে মনোযোগ কেন্দ্রীভূত করতে হবে failed ক্রম. অন্য সুন্দর জিনিসটি হচ্ছে পরীক্ষার আউটপুট আপনাকে এই সমস্ত তথ্য প্রদর্শন করে,
আমি যে বিষয়ে কথা বলছি তার উদাহরণ হিসাবে নীচের তুলনা করুন:
জমিদারি ব্যবহার:
Assert(variable_A == expected_value_1); // if this fails...
Assert(variable_B == expected_value_2); // ...this will not execute
Assert(variable_C == expected_value_3); // ...and nor will this!
একটি সাবলীল বিডিডি এপিআই ব্যবহার করে:
(ধারণা করুন যে ইতালিযুক্ত বিটগুলি মূলত পদ্ধতি পয়েন্টার)
WithScenario("Test Scenario")
.Given(*AConfiguration*) // each method
.When(*MyMethodToTestIsCalledWith*, variable_A, variable_B, variable_C) // in the
.Then(*ExpectVariableAEquals*, expected_value_1) // Scenario will
.And(*ExpectVariableBEquals*, expected_value_2) // indicate if it has
.And(*ExpectVariableCEquals*, expected_value_3) // passed or failed execution.
.Execute();
এখন অনুমোদিত বিডিডি সিনট্যাক্সটি দীর্ঘতর এবং শব্দযুক্ত, এবং এই উদাহরণগুলি মারাত্মকভাবে স্বীকৃত, তবে খুব জটিল পরীক্ষার পরিস্থিতিতে যেখানে প্রদত্ত সিস্টেম আচরণের ফলে সিস্টেমে অনেক কিছুই পরিবর্তিত হয়, বিডিডি সিনট্যাক্স আপনাকে একটি পরিষ্কার প্রস্তাব দেয় আপনি কী পরীক্ষা করছেন এবং কীভাবে আপনার পরীক্ষার কনফিগারেশন সংজ্ঞায়িত করা হয়েছে সে সম্পর্কে বিবরণ এবং আপনি এই কোডটি একটি নন-প্রোগ্রামারকে প্রদর্শন করতে পারেন এবং তারা তাত্ক্ষণিকভাবে বুঝতে পারবে যে কী চলছে। তদ্ব্যতীত, "ভেরিয়েবল_এ" উভয় ক্ষেত্রে যদি পরীক্ষায় ব্যর্থ হয় তবে আপনার সমস্যাটি স্থির না করা পর্যন্ত অ্যাসেটস উদাহরণটি প্রথম দৃsert়তার পূর্বে কার্যকর হবে না, যখন বিডিডি এপিআই শৃঙ্খলে ডাকা প্রতিটি পদ্ধতি কার্যকর করে, এবং নির্দেশ করে যে কোনটি বিবৃতিটির পৃথক অংশগুলি ত্রুটিযুক্ত ছিল।
ব্যক্তিগতভাবে আমি দেখতে পাচ্ছি যে এই পদ্ধতির ফলে আরও বেশি traditionalতিহ্যবাহী xUnit ফ্রেমওয়ার্ক এই অর্থে কাজ করে যে পরীক্ষার ভাষা একই ভাষা যা আপনার গ্রাহকরা তাদের যৌক্তিক প্রয়োজনীয়তার বিষয়ে কথা বলবেন। তবুও, আমি আমার প্রচেষ্টাকে সমর্থন করার জন্য একটি সম্পূর্ণ টেস্টিং এপিআই আবিষ্কার করার প্রয়োজন ছাড়াই একই রকম শৈলীতে xUnit ফ্রেমওয়ার্কগুলি ব্যবহার করতে সক্ষম হয়েছি এবং যদিও দাবিগুলি এখনও কার্যকরভাবে শর্ট সার্কিট করবে, তারা আরও পরিষ্কার করে পড়বে। এই ক্ষেত্রে:
নুনিট ব্যবহার :
[Test]
void TestMyMethod()
{
const int theExpectedValue = someValue;
GivenASetupToTestMyMethod();
var theActualValue = WhenIExecuteMyMethodToTest();
Assert.That(theActualValue, Is.EqualTo(theExpectedValue)); // nice, but it's not BDD
}
আপনি যদি ইউনিট টেস্টিং এপিআই ব্যবহার করে অন্বেষণ করার সিদ্ধান্ত নেন তবে আমার পরামর্শটি হ'ল কিছু সময়ের জন্য বিভিন্ন সংখ্যক এপিআইয়ের সাথে পরীক্ষা করা এবং আপনার পদ্ধতির বিষয়ে মন খোলা রাখা। আমি ব্যক্তিগতভাবে বিডির পক্ষে হয়ে ওঠার সময়, আপনার নিজের ব্যবসায়ের প্রয়োজনে আপনার দলের পরিস্থিতিতে কিছু আলাদা প্রয়োজন হতে পারে। মূল বিষয়টি হ'ল আপনার বিদ্যমান সিস্টেমটিকে দ্বিতীয়-অনুমান করা এড়ানো। আপনি প্রয়োজন বোধ হয় অন্য এপিআই ব্যবহার করে কয়েকটি পরীক্ষার সাহায্যে আপনার বিদ্যমান পরীক্ষাগুলিকে সর্বদা সমর্থন করতে পারেন, তবে আমি অবশ্যই সমস্ত কিছু একই করার জন্য একটি বিশাল পরীক্ষার পুনর্লিখনের সুপারিশ করব না। লিগ্যাসি কোডটি ব্যবহারের বাইরে চলে যাওয়ায় আপনি সহজেই এটিকে এবং এর পরীক্ষাগুলিকে নতুন কোড এবং বিকল্প এপিআই ব্যবহার করে পরীক্ষাগুলি সহজেই প্রতিস্থাপন করতে পারেন এবং এটি কোনও বড় প্রচেষ্টায় বিনিয়োগ করার দরকার নেই যা আপনাকে অবশ্যই কোনও আসল ব্যবসায়ের মূল্য দেয় না। ইউনিট টেস্টিং এপিআই ব্যবহার করার জন্য,