MSTEST0038: Gebruik 'Assert.AreSame' of 'Assert.AreNotSame' niet met waardetypen
Eigendom | Waarde |
---|---|
Regel-ID | MSTEST0038 |
titel | Gebruik 'Assert.AreSame' of 'Assert.AreNotSame' niet met waardetypen |
Categorie | Gebruik |
Fix is brekend of niet-brekend | Onbreekbaar |
standaard ingeschakeld | Ja |
standaard ernst | Waarschuwing |
geïntroduceerd in versie | 3.8.0 |
Bestaat er een codereparatie? | Ja |
Oorzaak
Het gebruik van Assert.AreSame of Assert.AreNotSame, wanneer een of beide argumenten een waardetype zijn.
Beschrijving van regel
Assert.AreSame en Assert.AreNotSame werken door de verwijzing van de gegeven expected
/notExpected
en werkelijke argumenten via ReferenceEquals
te vergelijken. Wanneer u een waardetype doorgeeft, wordt dit daarom in het vak.
Als u AreSame
gebruikt, mislukt de assert altijd. Als u AreNotSame
gebruikt, zal de assertie altijd slagen.
Voor AreSame
geldt het enige geval wanneer de assert wordt doorgegeven als beide argumenten null-waardetypen zijn waarvan de waarden beide null zijn. In dit geval is het duidelijker om twee afzonderlijke Assert.IsNull
aanroepen te gebruiken.
Hoe schendingen op te lossen
Gebruik Assert.AreEqual
en Assert.AreNotEqual
in plaats van Assert.AreSame
en Assert.AreNotSame
.
Als het gebruik van Assert.AreSame
en beide argumenten null-waardetypen zijn waarvan de waarden naar verwachting null zijn, kunnen twee afzonderlijke aanroepen Assert.IsNull
beter passen dan AreEqual
, afhankelijk van de intentie van de test.
Wanneer waarschuwingen onderdrukken
Een waarschuwing van deze regel niet onderdrukken. Als u deze regel negeert, resulteert dit in een assertie die altijd mislukt of altijd slaagt.