波斯马BOSSMA Information Technology

关于Assert.ReferenceEquals的误解

发布时间:2011年12月21日 / 分类:DOTNET / 11,170 次浏览 / 评论

在做单元测试的时候,想比较两个实例是否相同,用了Assert.ReferenceEquals,结果发现无论是否真的相同总是能通过。

通过“转到定义”发现调用的是System.Object.ReferenceEquals,这时还没想明白问题。于是使用:

Assert.IsFalse(object.ReferenceEquals(expected, actual));

这个可以正确执行。

于是又想是Assert做了什么吗?应该没有啊。网上继续搜,找到一篇文章:

http://stackoverflow.com/questions/766297/assert-referenceequals-passes-where-object-referenceequals-returns-false-i

终于恍然大悟,ReferenceEquals根本就不是断言方法,任何一个类都已经从Object继承了这个静态方法。

这是一个严重的理解错误啊,谨记。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《关于Assert.ReferenceEquals的误解

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论