我无法理解为什么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>.
为什么当对象看起来相同时,此测试会失败?
答案 0 :(得分:15)
什么是CircleData
?它会覆盖Equals
吗?在我看来你正在克隆它,这意味着你有两个独立的CircleData
实例。除非CircleData
覆盖Equals
,否则它将执行引用相等性检查,这将失败。
答案 1 :(得分:0)
目前尚不清楚你的dataService
在幕后做了什么,但如果它是序列化/反序列化,你就不会获得相同的对象引用。 AreEqual
比较内存中的对象引用而不是值。
答案 2 :(得分:0)
可能你的Object没有正确实现Object.Equals。