ইউনিট পরীক্ষার প্রত্যাশিত ফলাফলগুলি হার্ডকোড করা উচিত, না সেগুলি প্রাথমিক ভেরিয়েবলের উপর নির্ভরশীল হতে পারে? হার্ডকোডযুক্ত বা গণনা করা ফলাফলগুলি কি ইউনিট পরীক্ষায় ত্রুটিগুলি প্রবর্তনের ঝুঁকি বাড়ায়? অন্যান্য বিষয়গুলিও আমি বিবেচনা করি নি?
উদাহরণস্বরূপ, এই দুটির মধ্যে কোনটি আরও নির্ভরযোগ্য ফর্ম্যাট?
[TestMethod]
public void GetPath_Hardcoded()
{
MyClass target = new MyClass("fields", "that later", "determine", "a folder");
string expected = "C:\\Output Folder\\fields\\that later\\determine\\a folder";
string actual = target.GetPath();
Assert.AreEqual(expected, actual,
"GetPath should return a full directory path based on its fields.");
}
[TestMethod]
public void GetPath_Softcoded()
{
MyClass target = new MyClass("fields", "that later", "determine", "a folder");
string expected = "C:\\Output Folder\\" + string.Join("\\", target.Field1, target.Field2, target.Field3, target.Field4);
string actual = target.GetPath();
Assert.AreEqual(expected, actual,
"GetPath should return a full directory path based on its fields.");
}
সম্পাদনা 1: ডিএক্সএম এর উত্তরের প্রতিক্রিয়াতে, বিকল্প 3 কি পছন্দসই সমাধান?
[TestMethod]
public void GetPath_Option3()
{
string field1 = "fields";
string field2 = "that later";
string field3 = "determine";
string field4 = "a folder";
MyClass target = new MyClass(field1, field2, field3, field4);
string expected = "C:\\Output Folder\\" + string.Join("\\", field1, field2, field3, field4);
string actual = target.GetPath();
Assert.AreEqual(expected, actual,
"GetPath should return a full directory path based on its fields.");
}