從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