Teilen über


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 AreSameverwenden, 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.