为什么存在Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals()?

时间:2009-01-28 20:12:45

标签: unit-testing mstest

MSDN文档中的Assert.Equals()说明: 不要使用这种方法。

就是这样,完整的解释。呃..好吧,但是......那为什么呢? 它是早期版本框架的弃用方法吗?什么应该只被其他Microsoft Assemblies使用?

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

有人知道吗?

4 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:4)

.NET中的所有对象都来自Object

Object有一个.Equals()方法。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

Assert.Equals(42, ComputeMeaningOfLife());

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

添加了

Assert.Equals,因此上面示例中的代码不会回退到Object.Equals并且无声地在单元测试中。相反,当从单元测试调用时,Assert.Equals总是会抛出异常,提醒您不要使用它。