共用方式為


MSTEST0038:請勿搭配實值型別使用 'Assert.AreSame' 或 'Assert.AreNotSame'

財產 價值
規則標識碼 MSTEST0038
標題 請勿使用 『Assert.AreSame』 或 'Assert.AreNotSame' 搭配實值類型
類別 用法
修正是造成問題還是未造成問題 不間斷
預設啟用 是的
預設嚴重性 警告
在版本 中引進 3.8.0
是否有程式碼修正 是的

原因

使用 Assert.AreSameAssert.AreNotSame,其中一或兩個引數都是值類型。

規則描述

藉由 Assert.AreSame比較給定的 Assert.AreNotSameexpected 的 / 和實際參數,notExpectedReferenceEquals 工作。 因此,當您傳遞實值型別時,它會被 封箱

如果使用 AreSame,則斷言將總是失敗。 如果使用 AreNotSame,則斷言一律會通過。

針對 AreSame,判斷提示傳遞的唯一案例是,如果兩個自變數都是可為 Null 的實值型別,其值都是 Null。 在此情況下,有兩個不同的 Assert.IsNull 呼叫更清楚。

如何修正違規

使用 Assert.AreEqualAssert.AreNotEqual,而不是使用 Assert.AreSameAssert.AreNotSame。 如果使用 Assert.AreSame,而且這兩個自變數都是可為 Null 的實值型別,其值必須是 null,則根據測試意圖而定,兩個不同的 Assert.IsNull 呼叫可能比 AreEqual更合適。

隱藏警告的時機

請勿隱藏此規則的警告。 忽略此規則將導致斷言一律失敗或一律通過。