Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| 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 AreSamekommer 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.