MSTEST0038: Använd inte Assert.AreSame eller Assert.AreNotSame med värdetyper
Egenskap | Värde |
---|---|
regel-ID | MSTEST0038 |
Rubrik | Använd inte Assert.AreSame eller Assert.AreNotSame med värdetyper |
Kategori | Användning |
Fixet är antingen brytande eller icke-brytande | Icke-brytande |
Aktiverad som standard | Ja |
Standard allvarlighetsgrad | Varning |
introducerades i version | 3.8.0 |
Finns det en kodkorrigering | Ja |
Orsak
Användningen av Assert.AreSame eller Assert.AreNotSame där ett eller båda argumenten är en värdetyp.
Regelbeskrivning
Assert.AreSame och Assert.AreNotSame fungerar genom att jämföra referens för de angivna expected
/notExpected
och faktiska argument via ReferenceEquals
. När du skickar en värdetyp är det därför rutad.
Om du använder AreSame
kommer alltid assertionen att misslyckas. Om du använder AreNotSame
, kommer påståendet alltid att godkännas.
För AreSame
är det enda fallet när kontrollen skickas om båda argumenten är nullbara värdetyper vars värden båda är null. I det här fallet är det tydligare att ha två separata Assert.IsNull
anrop.
Så här åtgärdar du överträdelser
Använd Assert.AreEqual
och Assert.AreNotEqual
i stället för Assert.AreSame
och Assert.AreNotSame
.
Om användning av Assert.AreSame
och båda argumenten är nullbara värdetyper vars värden förväntas vara null, kan två separata Assert.IsNull
anrop passa bättre än AreEqual
, beroende på avsikten med testet.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln. Om du ignorerar den här regeln resulterar det i ett påstående som alltid misslyckas eller alltid lyckas.