从MSDN文档: Assert.Equals()的说明不要使用此方法。为什么存在Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals()?
就是这样,完整的解释。呃..好的,但是......为什么呢? 它是从早期版本的框架中弃用的方法吗?某些应该仅被其他Microsoft程序集使用的东西?
这只是让我想用它更知道我不应该。 ;-)
有谁知道吗?
从MSDN文档: Assert.Equals()的说明不要使用此方法。为什么存在Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals()?
就是这样,完整的解释。呃..好的,但是......为什么呢? 它是从早期版本的框架中弃用的方法吗?某些应该仅被其他Microsoft程序集使用的东西?
这只是让我想用它更知道我不应该。 ;-)
有谁知道吗?
。等式从对象继承。它被列为“不要使用此方法”,因此用户不会将其与AreEqual方法混淆。
它在2008年(也许是SP1)被更改为通过测试时失败,以致偶然使用它的人被告知他们真的不应该使用它。
Assert.Equals
,就像它基于类的方法Object.Equals
一样,对比较对象是非常有用的。但是,这两种方法都不适用于独立检测和报告或单元测试中的错误,因为如果值不相等,Object.Equals
将返回布尔值而不是抛出。这是,如果在单元测试中使用这样的问题:
Assert.Equals(42, ComputeMeaningOfLife());
除了可能的运行时间太长:-)这个单元测试的问题,这个测试将默认继续即使计算方法提供了错误的结果。正确的使用方法是Assert.AreEqual
,它不返回任何内容,但如果参数不相等则抛出异常。
Assert.Equals
被添加,因此上面的示例中的代码不会回退到Object.Equals
,并在单元测试中静静地中性。相反,当从单元测试中调用时,Assert.Equals
总是会引发异常,提醒您不要使用它。
请注意```CollectionAssert``具有暴露``Object.Equals``的缺陷。与``Assert``不同,`````````````'`'```````````不会重新定义该方法,所以当您运行包含``Assert.Equals``的测试运行测试时, – vvnurmi 2017-05-11 11:17:48