Assert
jest klasą statyczną dziedziczącą po System.Object, tak jak wszystkie klasy robią to niejawnie w C #. System.Object implementuje następującą metodę:
static bool Equals(object a, object b)
Metody na Assert, które są przeznaczone do porównania równości, są Assert.AreEqual()
metodami. Dlatego wywołanie Object.Equals()
metody za pomocą klasy Assert w teście jednostkowym jest z pewnością błędem. Aby zapobiec temu błędowi i uniknąć nieporozumień, twórcy NUnit celowo ukryli Object.Equals
w klasie Assert implementację, która zgłasza wyjątek. Oto implementacja:
[EditorBrowsable(EditorBrowsableState.Never)]
public static new bool Equals(object a, object b)
{
throw new AssertionException("Assert.Equals should not be used for Assertions");
}
Oczywiście sam komunikat o wyjątku jest mylący, ale przynajmniej informuje Cię, że zrobiłeś coś złego.