NUnit Assert.AreEqual(object a, object b) 假阴性? [英] NUnit Assert.AreEqual(object a, object b) false negative?

查看:76
本文介绍了NUnit Assert.AreEqual(object a, object b) 假阴性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白为什么 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆