Sdílet prostřednictvím


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í
Oprava je způsobující chybu nebo 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 AreSamejediný 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.AreNotEqualpouží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ž AreEqualv 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é.