NUnit Assert.AreEqual(object a, object b) 假阴性? [英] NUnit Assert.AreEqual(object a, object b) false negative?
问题描述
我不明白为什么 NUnit Assert.AreEqual 会失败.
I can't understand why NUnit Assert.AreEqual is failing.
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(存储序列化数据,然后反序列化).我插入了一个断点并检查了局部变量窗口中的对象——它们是相同的.
Using NHibernate (storing serialized data, then deserializing it). I've inserted a breakpoint and inspected the objects in Local variables window -- they are identical.
这是 NUnit 消息:
Here is the NUnit message:
Assert.AreEqual failed. Expected:<TestData.TestClassCircle>. Actual:<TestData.TestClassCircle>.
当对象看起来相同时,为什么这个测试会失败?
Why would this test be failing when the objects appear to be identical?
推荐答案
什么是 CircleData
?它会覆盖 Equals
吗?在我看来,您正在克隆它,这意味着您有两个单独的 CircleData
实例.除非 CircleData
覆盖 Equals
,否则它将执行引用相等性检查,但会失败.
What is CircleData
? Does it override Equals
? Looks to me like you're cloning it, which means that you've got two separate CircleData
instances. Unless CircleData
overrides Equals
, then it will be performing a reference equality check, which will fail.
这篇关于NUnit Assert.AreEqual(object a, object b) 假阴性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!