Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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.