NUnit Assert.AreEqual (объект a, объект b) ложный минус? - PullRequest
0 голосов
/ 29 июля 2010

Я не могу понять, почему происходит сбой NUnit Assert.AreEqual.

var dataService = new DataService(db);
dataService.Set("Tests", "circle1", circle);
var circleData = dataService.Get("Tests", "circle1");
Assert.IsNotNull(circleData);
var circleCopy = circleData.Get();
Assert.AreEqual(circle, circleCopy);

Использование NHibernate (хранение сериализованных данных, а затем их десериализация). Я вставил точку останова и проверил объекты в окне локальных переменных - они идентичны.

Вот сообщение NUnit:

Assert.AreEqual failed. Expected:<TestData.TestClassCircle>. Actual:<TestData.TestClassCircle>.

Почему этот тест не пройден, если объекты кажутся идентичными?

Ответы [ 3 ]

15 голосов
/ 29 июля 2010

Что такое CircleData?Это переопределяет Equals?Похоже, вы клонируете его, что означает, что у вас есть два отдельных экземпляра CircleData.Если CircleData не переопределяет Equals, то будет выполняться проверка на равенство ссылок, которая завершится неудачей.

0 голосов
/ 29 июля 2010

Вероятно, ваш объект неправильно реализует Object.Equals.

http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx

0 голосов
/ 29 июля 2010

Непонятно, что эти dataService из вас делают за кулисами, но если это сериализация / десериализация, вы не получите те же ссылки на объекты. AreEqual сравнивает ссылки на объекты в памяти, а не значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...