Assert
é uma classe estática herdada de System.Object, como todas as classes implicitamente em C #. System.Object implementa o seguinte método:
static bool Equals(object a, object b)
Os métodos em Assert que se destinam à comparação de igualdade são os Assert.AreEqual()
métodos. Portanto, chamar o Object.Equals()
método através da classe Assert em um teste de unidade é certamente um erro. Para evitar esse erro e evitar confusões, os desenvolvedores do NUnit ocultaram intencionalmente Object.Equals
a classe Assert com uma implementação que gera uma exceção. Aqui está a implementação:
/// <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");
}
É claro que a própria mensagem de exceção é confusa, mas pelo menos permite que você saiba que fez algo errado.