MSTEST0038: Verwenden Sie "Assert.AreSame" oder "Assert.AreNotSame" nicht mit Werttypen.
Eigenschaft | Wert |
---|---|
Regel-ID | MSTEST0038 |
Titel | Verwenden Sie "Assert.AreSame" oder "Assert.AreNotSame" nicht mit Werttypen. |
Kategorie | Verbrauch |
Fix is breaking or non-breaking | Nicht unterbrechend |
Standardmäßig aktiviert | Ja |
Standard-Schweregrad | Warnung |
Eingeführt in der Version | 3.8.0 |
Gibt es eine Codekorrektur | Ja |
Ursache
Die Verwendung von Assert.AreSame oder Assert.AreNotSame, wobei eines oder beide Argumente ein Wertetyp sind.
Regelbeschreibung
Assert.AreSame und Assert.AreNotSame arbeiten, indem die Referenz von den gegebenen expected
/notExpected
und tatsächlichen Argumenten mittels ReferenceEquals
verglichen werden. Wenn Sie einen Werttyp übergeben, wird dieser daher eingerahmt.
Wenn Sie AreSame
verwenden, schlägt das Assert immer fehl. Bei Verwendung von AreNotSame
ist die Behauptung immer erfolgreich.
Bei AreSame
ist der einzige Fall, in dem die Behauptung gilt, wenn beide Argumente Nullable-Typen mit jeweils null als Wert sind. In diesem Fall ist es klarer, zwei separate Assert.IsNull
-Anrufe zu haben.
Wie man Verstöße behebt
Verwenden Sie Assert.AreEqual
und Assert.AreNotEqual
anstelle von Assert.AreSame
und Assert.AreNotSame
.
Bei Verwendung von Assert.AreSame
und wenn beide Argumente nullable Wertetypen sind, deren Werte als Null erwartet werden, könnten zwei separate Assert.IsNull
-Aufrufe je nach Testabsicht besser geeignet sein als AreEqual
.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel. Das Ignorieren dieser Regel führt zu einer Assertion, die immer fehlschlägt oder immer besteht.