Assert
є статичним класом, що успадковується від System.Object, так як всі класи це неявно роблять у C #. System.Object реалізує наступний метод:
static bool Equals(object a, object b)
Методи на Assert, які призначені для порівняння рівності, - це Assert.AreEqual()
методи. Тому викликати Object.Equals()
метод через клас Assert в одиничному тесті - це, безумовно, помилка. Щоб запобігти цій помилці та уникнути плутанини, розробники NUnit навмисно ховались Object.Equals
у клас Assert із реалізацією, яка кидає виняток. Ось реалізація:
/// <summary>
/// The Equals method throws an AssertionException. This is done
/// to make sure there is no mistake by calling this function.
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
[EditorBrowsable(EditorBrowsableState.Never)]
public static new bool Equals(object a, object b)
{
// TODO: This should probably be InvalidOperationException
throw new AssertionException("Assert.Equals should not be used for Assertions");
}
Звичайно, саме повідомлення про виняток є заплутаним, але принаймні дає зрозуміти, що ви зробили щось не так.