Вот код моего класса:
Код: Выделить всё
public static class Project
{
public static object TheObject { get; set; }
public static void Startup(object theObject)
{
// ToDo: Project.Startup(): Test.
// ToDo: Project.Startup(): Implement.
}
}
Код: Выделить всё
[TestClass()]
public class ProjectTest
{
[TestMethod()]
public void StartupTest()
{
object obj = "hello";
Project.Startup(obj);
Assert.ReferenceEquals(obj, Project.TheObject); // Test Passes!?!
}
}
Обратите внимание, что изменение
Код: Выделить всё
Assert.ReferenceEquals(obj, Project.TheObject)в
Код: Выделить всё
Assert.IsTrue(object.ReferenceEquals(obj, Project.TheObject))приводит к тому, что этот тест правильно завершается неудачей.
Это кажется слишком простым, но я не могу понять, что здесь не так. Если кто-то сможет указать на мою ошибку, я буду очень признателен.
Заранее спасибо,
Майк
Обновление Ответ Джеймса Эйвери:
Ах, как глупо я себя сейчас чувствую. Я знал, что это должно быть что-то вроде этого. Ух ты.
Конечно, «GoToDefinition» приводит меня к «Object.ReferenceEquals()». Таким образом, ввод «Assert.ReferenceEquals()» на самом деле является System.Object.ReferenceEquals(), который в моем случае спокойно возвращал «false». Это, конечно, не имеет ничего общего с фактическим провалом утверждения, поэтому тест проходит. Удивительный.
Спасибо, Джеймс.