MSTEST0038: 値型では 'Assert.AreSame' または 'Assert.AreNotSame' を使用しない
プロパティ | [値] |
---|---|
ルール ID | MSTEST0038 |
タイトル | 値型では 'Assert.AreSame' または 'Assert.AreNotSame' を使用しない |
カテゴリ | 使用方法 |
修正が破壊的か非破壊的か | なし |
既定で有効 | あり |
既定の重要度 | 警告 |
導入されたバージョン | 3.8.0 |
コード修正の有無 | あり |
原因
一方または両方の引数が値型である Assert.AreSame または Assert.AreNotSame の使用。
規則の説明
Assert.AreSame と Assert.AreNotSame は、与えられた expected
/notExpected
の参照と実際の引数を ReferenceEquals
を介して比較することによって動作します。 したがって、値型を渡すと、ボックス化されます。
AreSame
を使用するとアサートは常に失敗します。 AreNotSame
を使用する場合、アサートは常に成功します。
AreSame
の場合、アサートが成功する唯一の場合は、両方の引数が null 許容値型で、その値が両方とも null の場合です。 この場合、2 つの個別の Assert.IsNull
呼び出しを行う方が明確です。
違反の修正方法
Assert.AreSame
と Assert.AreNotSame
の代わりに Assert.AreEqual
と Assert.AreNotEqual
を使用します。
Assert.AreSame
を使用し、両方の引数が値が null であると予想される null 許容値型である場合は、テストの意図に応じて、Assert.IsNull
よりも 2 つの個別の AreEqual
呼び出しが適している可能性があります。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。 この規則を無視すると、アサーションは常に失敗するか、常に成功することになります。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET