recientemente me topé con un comportamiento aparentemente extraño que Google no pudo explicar por completo.C# UnitTest - Assert.AreEqual() no llama a Igualdad si el argumento es nulo
using Microsoft.VisualStudio.TestTools.UnitTesting;
class TestClass
{
public override bool Equals(object obj)
{
return true;
}
}
[TestMethod]
public void TestMethod1()
{
TestClass t = new TestClass();
Assert.AreEqual (t, null); // fails
Assert.IsTrue (t.Equals (null)); // passes
}
Esperaré que esta prueba tenga éxito. Sin embargo, en Visual Studio 2008/.NET 3.5 falla. ¿Tiene la intención de ser así o es un error?
Dado que el valor esperado en NUnit es siempre el primero, está utilizando AreEqual() hacia atrás desde la convención. No puedo decir de los documentos si se compara t contra nulo, o nulo contra t, por lo que no llamaría confiable a una prueba que se base en esa distinción. – Ken