次の方法で共有


MSTEST0038: 値型では 'Assert.AreSame' または 'Assert.AreNotSame' を使用しない

プロパティ [値]
ルール ID MSTEST0038
タイトル 値型では 'Assert.AreSame' または 'Assert.AreNotSame' を使用しない
カテゴリ 使用方法
修正が破壊的か非破壊的か なし
既定で有効 あり
既定の重要度 警告
導入されたバージョン 3.8.0
コード修正の有無 あり

原因

一方または両方の引数が値型である Assert.AreSame または Assert.AreNotSame の使用。

規則の説明

Assert.AreSameAssert.AreNotSame は、与えられた expected/notExpected参照と実際の引数を ReferenceEquals を介して比較することによって動作します。 したがって、値型を渡すと、ボックス化されます。

AreSame を使用するとアサートは常に失敗します。 AreNotSameを使用する場合、アサートは常に成功します。

AreSameの場合、アサートが成功する唯一の場合は、両方の引数が null 許容値型で、その値が両方とも null の場合です。 この場合、2 つの個別の Assert.IsNull 呼び出しを行う方が明確です。

違反の修正方法

Assert.AreSameAssert.AreNotSame の代わりに Assert.AreEqualAssert.AreNotEqual を使用します。 Assert.AreSame を使用し、両方の引数が値が null であると予想される null 許容値型である場合は、テストの意図に応じて、Assert.IsNull よりも 2 つの個別の AreEqual 呼び出しが適している可能性があります。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。 この規則を無視すると、アサーションは常に失敗するか、常に成功することになります。