Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.