C# UnitTest - Geltend Zu Machen.AreEqual() ruft nicht Gleich, wenn das argument null ist

vor kurzem habe ich stolperte über eine scheinbar seltsame Verhalten, dass Google völlig gescheitert zu erklären.


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
}

Ich würde erwarten, dass dieser test erfolgreich zu sein. Aber in Visual Studio 2008 /.NET 3.5, versagt er. Ist es vorbestimmt, so zu sein oder ist es ein bug?

Da der erwartete Wert in NUnit ist immer die erste, die Sie verwenden AreEqual() rückwärts von der Konvention. Ich kann nicht sagen, von den docs, wenn er vergleicht t gegen null oder null gegen t, so würde ich das nicht nennen, einen test stützt sich auf die Unterscheidung zuverlässig.

InformationsquelleAutor mafu | 2009-01-20

Schreibe einen Kommentar