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 AreSame
asercja zawsze zakończy się niepowodzeniem. W przypadku używania AreNotSame
asercja zawsze przejdzie pomyślnie.
W przypadku AreSame
jedynym 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.