ধরা যাক আপনি ইয়াহটজি গেম টিডিডি স্টাইল লিখছেন। আপনি কোডের সেই অংশটি পরীক্ষা করতে চান যা নির্ধারণ করে যে পাঁচটি ডাই রোলের একটি সেট পুরো বাড়ি কিনা। যতদূর আমি জানি, টিডিডি করার সময় আপনি এই নীতিগুলি অনুসরণ করেন:
- প্রথমে পরীক্ষা লিখুন
- কার্যকর যে সহজ কাজ লিখুন
- পরিমার্জন এবং সংশোধক
সুতরাং প্রাথমিক পরীক্ষাটি এর মতো দেখতে পারে:
public void Returns_true_when_roll_is_full_house()
{
FullHouseTester sut = new FullHouseTester();
var actual = sut.IsFullHouse(1, 1, 1, 2, 2);
Assert.IsTrue(actual);
}
"কার্যকরভাবে কাজ করতে পারে এমন সহজ জিনিসটি লিখুন" অনুসরণ করার পরে, আপনার এখন এই IsFullHouse
পদ্ধতিটি লিখতে হবে :
public bool IsFullHouse(int roll1, int roll2, int roll3, int roll4, int roll5)
{
if (roll1 == 1 && roll2 == 1 && roll3 == 1 && roll4 == 2 && roll5 == 2)
{
return true;
}
return false;
}
এটি সবুজ পরীক্ষায় ফলাফল দেয় তবে বাস্তবায়ন অসম্পূর্ণ।
আপনি একটি পূর্ণ বাড়ির জন্য প্রতিটি সম্ভাব্য বৈধ সংমিশ্রণ (মান এবং অবস্থান উভয়) পরীক্ষা করা উচিত? এটি পুরোপুরি নিশ্চিত হওয়ার একমাত্র উপায় যা আপনার IsFullHouse
কোডটি সম্পূর্ণরূপে পরীক্ষিত এবং সঠিক হয়েছে বলে মনে হচ্ছে, তবে এটি করতে এটি বেশ পাগলও বলে মনে হচ্ছে।
আপনি ইউনিট পরীক্ষা কিভাবে এই জাতীয় কিছু হবে?
হালনাগাদ
এরিক এবং কিলিয়ান উল্লেখ করেছেন যে গ্রিন টেস্ট পেতে প্রাথমিক প্রয়োগে আক্ষরিক ব্যবহার করা সেরা ধারণা নাও হতে পারে। আমি কেন এটি করেছি তা ব্যাখ্যা করতে চাই এবং সেই ব্যাখ্যা কোনও মন্তব্যে মানায় না।
ইউনিট পরীক্ষার সাথে আমার ব্যবহারিক অভিজ্ঞতা (বিশেষত একটি টিডিডি পদ্ধতির ব্যবহার) খুব সীমাবদ্ধ। আমার মনে আছে টেকপবে রয় ওশেরভের টিডিডি মাস্টারক্লাসের একটি রেকর্ডিং দেখেছি। একটি পর্বে তিনি একটি স্ট্রিং ক্যালকুলেটর টিডিডি স্টাইল তৈরি করেন। স্ট্রিং ক্যালকুলেটরটির সম্পূর্ণ স্পেসিফিকেশনটি এখানে পাওয়া যাবে: http://osherove.com/tdd-kata-1/
তিনি এইভাবে একটি পরীক্ষা দিয়ে শুরু করেন:
public void Add_with_empty_string_should_return_zero()
{
StringCalculator sut = new StringCalculator();
int result = sut.Add("");
Assert.AreEqual(0, result);
}
Add
পদ্ধতির প্রথম প্রয়োগে এটি ফলাফল :
public int Add(string input)
{
return 0;
}
তারপরে এই পরীক্ষাটি যুক্ত করা হয়:
public void Add_with_one_number_string_should_return_number()
{
StringCalculator sut = new StringCalculator();
int result = sut.Add("1");
Assert.AreEqual(1, result);
}
এবং Add
পদ্ধতিটি পুনঃসংশ্লিষ্ট:
public int Add(string input)
{
if (input.Length == 0)
{
return 0;
}
return 1;
}
প্রতিটি পদক্ষেপের পরে রায় বলেছেন "সহজ জিনিসটি লিখুন যা কাজ করবে"।
তাই আমি ভেবেছিলাম যে টিডিডি-স্টাইল ইয়াহটজি গেমটি করার চেষ্টা করার সময় আমি এই পদ্ধতির চেষ্টা করব।
if (roll1 == 1 && roll2 == 1 && roll3 == 1 && roll4 == 2 && roll5 == 2)