Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Property | Value |
|---|---|
| Identyfikator reguły | MSTEST0068 |
| Title | Użyj Assert zamiast CollectionAssert |
| Kategoria | Zastosowanie |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone | Yes |
| domyślna ciężkość | Informacje |
| wprowadzone w wersji | 4.3.0 |
| Czy istnieje poprawka kodu | Yes |
Uwaga / Notatka
Ta reguła jest dostępna od msTest 4.3.
Przyczyna
Metoda testowa używa CollectionAssert metod zamiast równoważnych Assert metod.
Opis reguły
Większość CollectionAssert metod ma odpowiedniki w Assert systemie, które zapewniają te same funkcje. Należy preferować metody Assert ze względu na spójność, lepszą czytelność, łatwiejsze odnajdywanie oraz zgodność z zachowaniem we wszystkich frameworkach testowych.
Poniższe metody CollectionAssert mają równoważne metody Assert:
-
CollectionAssert.AreEqual(a, b)→Assert.AreSequenceEqual(a, b) -
CollectionAssert.AreNotEqual(a, b)→Assert.AreNotSequenceEqual(a, b) -
CollectionAssert.AreEquivalent(a, b)→Assert.AreSequenceEqual(a, b, SequenceOrder.InAnyOrder) -
CollectionAssert.AreNotEquivalent(a, b)→Assert.AreNotSequenceEqual(a, b, SequenceOrder.InAnyOrder) -
CollectionAssert.AllItemsAreNotNull(a)→Assert.AreAllNotNull(a) -
CollectionAssert.AllItemsAreUnique(a)→Assert.AreAllDistinct(a) -
CollectionAssert.AllItemsAreInstancesOfType(collection, typeof(T))→Assert.AreAllOfType<T>(collection) -
CollectionAssert.Contains(collection, value)→Assert.Contains(value, collection) -
CollectionAssert.DoesNotContain(collection, value)→Assert.DoesNotContain(value, collection)
Warning
Podczas migracji z CollectionAssert do Assert należy uważać na zmianę kolejności parametrów w Contains, DoesNotContain i AllItemsAreInstancesOfType. W Assertsystemie oczekiwana wartość jest zawsze pierwszym parametrem.
Przeciążenia AreEqual/AreNotEqual, które przyjmują IComparer, są pomijane, ponieważ Assert.AreSequenceEqual oczekuje IEqualityComparer<T> (inna semantyka). Przeciążenia AreEquivalent/AreNotEquivalent, które przyjmują IEqualityComparer<T>, są również pomijane.
IsSubsetOf
/
IsNotSubsetOf nie mają obecnie bezpośredniego Assert odpowiednika i nie są obsługiwane.
Jak naprawić naruszenia
Użyj dostarczonego narzędzia do poprawiania kodu, aby automatycznie zastąpić wywołania metod CollectionAssert ich odpowiednikami Assert. Możesz również ręcznie zamienić wywołania metody w razie potrzeby.
Kiedy pomijać ostrzeżenia
Nie ignoruj ostrzeżeń z tej zasady. Metody Assert zapewniają tę samą funkcjonalność z lepszą spójnością.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable MSTEST0068
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0068
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0068.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.