Метод Assert.AreEqual (объект, объект) - PullRequest
5 голосов
/ 25 июня 2011

Как метод Assert.AreEqual(object, object) (в пространстве имен Microsoft.VisualStudio.TestTools.UnitTesting) определяет, равны ли параметры?Использует ли он метод Object.Equals(object, object) (в пространстве имен System)?

1 Ответ

8 голосов
/ 25 июня 2011

используя отражатель вы можете видеть, что он действительно использует Object.Equals.

public static void AreEqual<T>(T expected, T actual, string message, params object[] parameters)
{
    if (!object.Equals(expected, actual))
    {
        string str;
        if (((actual != null) && (expected != null)) && !actual.GetType().Equals(expected.GetType()))
        {
            str = (string) FrameworkMessages.AreEqualDifferentTypesFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), expected.GetType().FullName, ReplaceNulls(actual), actual.GetType().FullName);
        }
        else
        {
            str = (string) FrameworkMessages.AreEqualFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), ReplaceNulls(actual));
        }
        HandleFail("Assert.AreEqual", str, parameters);
    }
}
...