Các kết quả dự kiến của một bài kiểm tra đơn vị sẽ được mã hóa cứng, hoặc chúng có thể phụ thuộc vào các biến khởi tạo không? Các kết quả được mã hóa cứng hoặc tính toán có làm tăng nguy cơ đưa ra các lỗi trong bài kiểm tra đơn vị không? Có những yếu tố khác tôi chưa xem xét?
Ví dụ, cái nào trong hai cái này là một định dạng đáng tin cậy hơn?
[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.");
}
EDIT 1: Đáp lại câu trả lời của DXM, tùy chọn 3 có phải là giải pháp ưa thích không?
[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.");
}