Assert.Equals的用途是什么?

21

我正在为我的当前项目编写单元测试,并发现了一些奇怪的东西。.Net UnitTesting库同时具有Assert.Equals和Assert.AreEqual方法。Assert.Equals的注释建议使用Assert.AreEqual方法来比较两个对象,但没有给出为什么要使用Assert.AreEqual而不是Assert.Equals的理由。请问在单元测试中什么情况下应该使用Assert.Equals,如果有的话?Assert.Equals和Assert.AreEqual之间的区别是什么?


1
你首先要了解 Assert.Equals 的作用或含义...它的功能是检查两个对象是否相等,'?' 使对象变为可空类型,如果你对 DateTime, int 等进行尝试并尝试设置类似于 var myInt = null 这样的内容,则会失败,但设置 var myInt? = null 将使整数成为可空类型。这应该能帮助你回答自己的问题。 - MethodMan
更重要的是,我认为你应该问何时使用.Equals==之间的区别..一个检查“对象”,而另一个检查“值”。 - MethodMan
是的,我知道.Equals和==的区别,我没有想到Assert.Equals是从object继承而来的。这解决了很多问题,谢谢。 - actkatiemacias
5
这个问题被错误地关闭了。它是具有建设性的,因为它提出了一个不明显的设计问题,有助于正确应用“Assert”类。然而,正如之前所指出的那样,它是一个重复的问题。 - Edward Brey
1个回答

44

Assert.Equals是从object继承的Equals方法。 它与单元测试无关,实际上没有用处。


更准确地说,Assert.EqualsObject.Equals完全相同。Object.Equals有用。

但是,如果您正在使用Assert.Equals,那么您可能会将它与Assert.AreEqual混淆,并且您需要停止使用它。


4
“与单元测试无关”- 没问题... 但是“实际上没有用处”可能会误导。 - Marc Gravell
4
有何用途?比较“Assert”类的实例有什么用处? - John Saunders
1
我认为在静态的Assert类上使用它是没有意义的。 - Malcolm O'Hare
2
@JohnSaunders 它的用途很简单,即“确定指定的对象实例是否被视为相等”。(http://msdn.microsoft.com/en-gb/library/w4hkze5k.aspx)。我同意它与测试无关,但它的用途已经清楚地说明了。 - Marc Gravell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接