15

MSDN 文档中 Assert.Equals() 的说明:请勿使用此方法。

就是这样,完整的解释。呃……好吧,但是……为什么会在那里?它是早期版本的框架中已弃用的方法吗?应该只由其他 Microsoft 程序集使用的东西?

它只是让我更想使用它,知道我不应该这样做。;-)

有人知道吗?

4

4 回答 4

22

.Equals 继承自对象。它被列为“请勿使用此方法”,因此用户不会将其与 AreEqual 方法混淆。

于 2009-01-28T20:16:16.310 回答
4

.NET 中的所有对象都派生自Object

对象有一个 .Equals() 方法。

显然,此特定对象的 .Equals() 方法没有做任何有用的事情,因此文档警告您它没有做任何有用的事情。

于 2009-01-28T20:17:17.980 回答
1

它在 2008 年(可能是 SP1)被更改为在调用时未通过测试,因此意外使用它的人被告知他们真的不应该使用它。

于 2009-02-14T06:45:58.970 回答
1

Assert.Equals,就像它的基础类方法一样Object.Equals,对于比较对象非常有用。但是,这两种方法都不适用于独立检测和报告或单元测试中的错误,因为Object.Equals如果值不相等,则返回布尔值而不是抛出。如果在单元测试中这样使用,这是一个问题:

Assert.Equals(42, ComputeMeaningOfLife());

除了这个单元测试可能运行太久的问题:-),即使 Compute 方法提供了错误的结果,这个测试也会默默地成功。正确使用的方法是Assert.AreEqual,它不返回任何内容,但如果参数不相等则抛出异常。

Assert.Equals已添加,因此上面示例中的代码不会退回到Object.Equals单元测试并默默地中性化单元测试。相反,当从单元测试中调用时,Assert.Equals总是会抛出一个异常,提醒您不要使用它。

于 2013-12-30T12:13:32.920 回答