רק רציתי לעדכן פוסט מהעבר מתודה חדשה להשוואת אובייקטים בעת הבדיקות, משהו יותר נחמד עם ג'נריקס
להזכיר, רציתי להשוות שני אובייקטים – אחד מה שהקוד החזיר ואחד זה מה שמצופה, אז כתבתי מתודה פשוטה שתשווה בין כל 2 אובייקטים.
הוספתי בסוף אופציה להוריד בדיקה של חלק מהמאפיינים – כמו למשל זמן יצירה שיכול להיות שונה בדטה בייס:
public static void Compare<T>(T expected, T actual, params string[] exclude)
{
Assert.IsNotNull(expected);
Assert.IsNotNull(actual);
List<string> p = new List<string>();
if (exclude != null)
{
p.AddRange(exclude);
}
foreach (var pi in typeof(T).GetProperties())
{
if (p.SingleOrDefault(a => a.Equals(pi.Name, StringComparison.InvariantCultureIgnoreCase)) != null)
{
continue;
}
Assert.AreEqual(pi.GetValue(expected, null), pi.GetValue(actual, null), pi.Name);
}
}
והשימוש פשוט כמובן:
[TestMethod()]
public static void Test()
{
var a = new MailMessage()
{
Subject = "MYSubject",
Body = Guid.NewGuid().ToString()
};
var b = new MailMessage()
{
Subject = "MYSubject",
Body = Guid.NewGuid().ToString()
};
Compare<MailMessage>(a, b, null);
Compare<MailMessage>(a, b, "Body");
}
Currently rated 5.0 by 1 people
- Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5