MSTEST0038: Nepoužívejte výraz Assert.AreSame ani Assert.AreNotSame s typy hodnot.
Nemovitost | Hodnota |
---|---|
ID pravidla | MSTEST0038 |
název | Nepoužívejte Assert.AreSame ani Assert.AreNotSame s typy hodnot. |
kategorie | Použití |
Nepřerušované | |
Povoleno ve výchozím nastavení | Ano |
Výchozí závažnost | Varování |
Představeno ve verzi | 3.8.0 |
Existuje oprava kódu | Ano |
Příčina
Použití Assert.AreSame nebo Assert.AreNotSame s jedním nebo oběma argumenty typu hodnoty.
Popis pravidla
Assert.AreSame a Assert.AreNotSame pracují porovnáváním odkazu daného expected
/notExpected
a skutečných argumentů prostřednictvím ReferenceEquals
. Proto při předávání hodnotového typu je zabalen.
Pokud používáte AreSame
, assert vždy selže. Pokud používáte AreNotSame
, bude kontrolní výraz vždy předávat.
Pro AreSame
jediný případ, kdy tato aserce projde, nastává, pokud oba argumenty jsou typy hodnot, které mohou obsahovat null, a jejich hodnoty jsou obě null. V tomto případě je jasnější mít dvě samostatná Assert.IsNull
volání.
Jak opravit porušení
Místo Assert.AreEqual
a Assert.AreNotEqual
používejte Assert.AreSame
a Assert.AreNotSame
.
Pokud používáte Assert.AreSame
a oba argumenty jsou hodnotové typy s možnou hodnotou null, jejichž hodnoty mají být null, můžou být dvě samostatná volání Assert.IsNull
vhodnější než AreEqual
v závislosti na záměru testu.
Kdy potlačit upozornění
Nepotlačujte varování z tohoto pravidla. Ignorování tohoto pravidla povede k potvrzení, které bude buď vždy neúspěšné, nebo vždy úspěšné.