Udostępnij za pośrednictwem


MSTEST0038: Nie używaj "Assert.AreSame" ani "Assert.AreNotSame" z typami wartości

Własność Wartość
identyfikator reguły MSTEST0038
Tytuł Nie używaj metod "Assert.AreSame" ani "Assert.AreNotSame" z typami wartości
Kategoria Użytkowanie
Poprawka psuje działanie lub jest bez wpływu Nierozdzielający
włączone domyślnie Tak
domyślna ciężkość Ostrzeżenie
wprowadzone w wersji 3.8.0
czy istnieje poprawka kodu Tak

Przyczyna

Użycie Assert.AreSame lub Assert.AreNotSame, gdy jeden lub oba argumenty są typu wartości.

Opis reguły

Assert.AreSame i Assert.AreNotSame działają, porównując odniesienia danych expected/notExpected oraz rzeczywistych argumentów za pomocą ReferenceEquals. W związku z tym po przekazaniu typu wartości jest on pole.

W przypadku używania AreSameasercja zawsze zakończy się niepowodzeniem. W przypadku używania AreNotSameasercja zawsze przejdzie pomyślnie.

W przypadku AreSamejedynym przypadkiem, gdy asercja jest spełniona, jest to, że oba argumenty są typami wartości dopuszczającymi wartość null i obie mają wartość null. W tym przypadku lepsze jest zastosowanie dwóch oddzielnych wywołań Assert.IsNull.

Jak naprawić naruszenia

Użyj Assert.AreEqual i Assert.AreNotEqual zamiast Assert.AreSame i Assert.AreNotSame. Jeśli używasz Assert.AreSame i oba argumenty są typami wartości dopuszczanymi wartości null, których wartości powinny mieć wartość null, dwa oddzielne wywołania Assert.IsNull mogą być lepsze niż AreEqual, w zależności od intencji testu.

Kiedy pomijać ostrzeżenia

Nie ignoruj ostrzeżenia z tej reguły. Ignorowanie tej reguły spowoduje twierdzenie, które zawsze się nie powiedzie lub zawsze zda.