Assert
es una clase estática que hereda de System.Object, como todas las clases lo hacen implícitamente en C #. System.Object implementa el siguiente método:
static bool Equals(object a, object b)
Los métodos en Assert que están destinados a la comparación de igualdad son los Assert.AreEqual()
métodos. Por lo tanto, llamar al Object.Equals()
método a través de la clase Assert en una prueba unitaria es ciertamente un error. Para evitar este error y evitar confusiones, los desarrolladores de NUnit se han ocultado intencionalmente Object.Equals
en la clase Assert con una implementación que arroja una excepción. Aquí está la implementación:
/// <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");
}
Por supuesto, el mensaje de excepción en sí mismo es confuso, pero al menos te permite saber que has hecho algo mal.