MSTEST0068: Använd Assert i stället för CollectionAssert

Property Value
Regel-ID MSTEST0068
Title Använd Assert i stället för CollectionAssert
Kategori Användning
Korrigeringen är antingen brytande eller icke-brytande Non-breaking
Aktiverad som standard Yes
Standard allvarlighetsgrad Info
introducerades i version 4.3.0
Finns det en kodkorrigering Yes

Anmärkning

Den här regeln är tillgänglig från och med MSTest 4.3.

Orsak

En testmetod använder CollectionAssert metoder i stället för motsvarande Assert metoder.

Regelbeskrivning

De flesta CollectionAssert metoder har motsvarande motsvarigheter i Assert som tillhandahåller samma funktioner. Assert Föredra metoderna för konsekvens, bättre läsbarhet, förbättrad identifiering och anpassning till beteende i alla testramverk.

Följande CollectionAssert metoder har motsvarande Assert metoder:

  • 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)

Varning

När du migrerar från CollectionAssert till Assertbör du vara försiktig med ändringen i parameterordningen för Contains, DoesNotContainoch AllItemsAreInstancesOfType. I Assertär det förväntade värdet alltid den första parametern.

Överlagrade varianter av AreEqual/AreNotEqual som tar ett argument av typen IComparer utelämnas eftersom Assert.AreSequenceEqual förväntar sig en IEqualityComparer<T> (annan semantik). Överlagrade versioner av AreEquivalent/AreNotEquivalent som tar en IEqualityComparer<T> utelämnas också. IsSubsetOf / IsNotSubsetOf har ingen direkt Assert motsvarighet idag och hanteras inte.

Så här åtgärdar du överträdelser

Använd den angivna kodkorrigeringen för att automatiskt ersätta CollectionAssert metodanrop med motsvarande Assert metoder. Du kan också ersätta metodanropen manuellt om det behövs.

När du ska ignorera varningar

Ignorera inte varningar från den här regeln. Metoderna Assert ger samma funktionalitet med bättre enhetlighet.

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable MSTEST0068
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0068

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0068.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.