MSDN 文档中 Assert.Equals() 的说明:请勿使用此方法。
就是这样,完整的解释。呃……好吧,但是……为什么会在那里?它是早期版本的框架中已弃用的方法吗?应该只由其他 Microsoft 程序集使用的东西?
它只是让我更想使用它,知道我不应该这样做。;-)
有人知道吗?
MSDN 文档中 Assert.Equals() 的说明:请勿使用此方法。
就是这样,完整的解释。呃……好吧,但是……为什么会在那里?它是早期版本的框架中已弃用的方法吗?应该只由其他 Microsoft 程序集使用的东西?
它只是让我更想使用它,知道我不应该这样做。;-)
有人知道吗?
.Equals 继承自对象。它被列为“请勿使用此方法”,因此用户不会将其与 AreEqual 方法混淆。
它在 2008 年(可能是 SP1)被更改为在调用时未通过测试,因此意外使用它的人被告知他们真的不应该使用它。
Assert.Equals
,就像它的基础类方法一样Object.Equals
,对于比较对象非常有用。但是,这两种方法都不适用于独立检测和报告或单元测试中的错误,因为Object.Equals
如果值不相等,则返回布尔值而不是抛出。如果在单元测试中这样使用,这是一个问题:
Assert.Equals(42, ComputeMeaningOfLife());
除了这个单元测试可能运行太久的问题:-),即使 Compute 方法提供了错误的结果,这个测试也会默默地成功。正确使用的方法是Assert.AreEqual
,它不返回任何内容,但如果参数不相等则抛出异常。
Assert.Equals
已添加,因此上面示例中的代码不会退回到Object.Equals
单元测试并默默地中性化单元测试。相反,当从单元测试中调用时,Assert.Equals
总是会抛出一个异常,提醒您不要使用它。