[英]NUnit Assert.AreEqual(object a, object b) false negative?
I can't understand why NUnit Assert.AreEqual is failing. 我不明白为什么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);
Using NHibernate (storing serialized data, then deserializing it). 使用NHibernate(存储序列化的数据,然后反序列化)。 I've inserted a breakpoint and inspected the objects in Local variables window -- they are identical. 我已经插入一个断点并检查了局部变量窗口中的对象,它们是相同的。
Here is the NUnit message: 这是NUnit消息:
Assert.AreEqual failed. Expected:<TestData.TestClassCircle>. Actual:<TestData.TestClassCircle>.
Why would this test be failing when the objects appear to be identical? 当对象看起来相同时,为什么该测试会失败?
What is CircleData
? 什么是CircleData
? Does it override Equals
? 它是否覆盖Equals
? Looks to me like you're cloning it, which means that you've got two separate CircleData
instances. 在我看来,您正在克隆它,这意味着您有两个单独的CircleData
实例。 Unless CircleData
overrides Equals
, then it will be performing a reference equality check, which will fail. 除非CircleData
重写Equals
,否则它将执行引用相等性检查,否则将失败。
It is not clear what is this dataService
of yours doing behind the scenes but if it is serializing/deserializing you won't get same object references. 目前尚不清楚您的dataService
在幕后做什么,但如果要序列化/反序列化,则不会得到相同的对象引用。 AreEqual
compares object references in memory and not values. AreEqual
比较内存中的对象引用而不是值。
Probably your Object doesn't implement Object.Equals correctly. 可能您的对象没有实现Object.Equals正确。
http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx http://msdn.microsoft.com/zh-CN/library/bsc2ak47.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.