MSTEST0068: Assert gebruiken in plaats van CollectionAssert

Property Value
Regel-ID MSTEST0068
Title Gebruik Assert in plaats van CollectionAssert
Categorie Gebruik
Fix kan brekend of niet-brekend zijn Non-breaking
standaard ingeschakeld Yes
standaardniveau van ernst Informatie
geïntroduceerd in versie 4.3.0
Is er een oplossing voor de code Yes

Note

Deze regel is beschikbaar vanaf MSTest 4.3.

Oorzaak

Een testmethode maakt gebruik CollectionAssert van methoden in plaats van gelijkwaardige Assert methoden.

Beschrijving van regel

De meeste CollectionAssert-methoden hebben gelijkwaardige tegenhangers in Assert met dezelfde functionaliteit. Geef de voorkeur aan de Assert methoden voor consistentie, betere leesbaarheid, verbeterde detectie en afstemming met gedrag in alle testframeworks.

De volgende CollectionAssert methoden hebben gelijkwaardige Assert methoden:

  • 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

Wanneer u migreert van CollectionAssert naar Assert, wees voorzichtig met de wijziging in parametervolgorde voor Contains, DoesNotContainen AllItemsAreInstancesOfType. In Assertis de verwachte waarde altijd de eerste parameter.

Overloads van AreEqual/AreNotEqual die een IComparer accepteren, worden overgeslagen omdat Assert.AreSequenceEqual een IEqualityComparer<T> verwacht (andere semantiek). Overbelastingvarianten van AreEquivalent/AreNotEquivalent die een IEqualityComparer<T> als argument nemen, worden ook overgeslagen. IsSubsetOf / IsNotSubsetOf hebben vandaag geen direct Assert equivalent en worden niet verwerkt.

Hoe schendingen op te lossen

Gebruik de meegeleverde codefixer om aanroepen van CollectionAssert-methoden automatisch te vervangen door de equivalente aanroepen van Assert-methoden. U kunt de methode-aanroepen ook handmatig vervangen als dat nodig is.

Wanneer waarschuwingen onderdrukken

Onderdrukt geen waarschuwingen van deze regel. De Assert methoden bieden dezelfde functionaliteit met betere consistentie.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.