Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Property | Wert |
|---|---|
| Regel-ID | MSTEST0068 |
| Title | Verwenden Sie Assert anstelle von CollectionAssert |
| Kategorie | Verwendung |
| Fix führt oder führt nicht zur Unterbrechung | Non-breaking |
| Standardmäßig aktiviert | Yes |
| Voreingestellte Schwere | Info |
| wurde in Version eingeführt. | 4.3.0 |
| Gibt es eine Codekorrektur | Yes |
Hinweis
Diese Regel ist ab MSTest 4.3 verfügbar.
Ursache
Eine Testmethode verwendet CollectionAssert Methoden anstelle entsprechender Assert Methoden.
Regelbeschreibung
Die meisten CollectionAssert Methoden verfügen über gleichwertige Entsprechungen, die Assert die gleiche Funktionalität bieten. Bevorzugen Sie die Methoden Assert für Konsistenz, bessere Lesbarkeit, verbesserte Auffindbarkeit und die Übereinstimmung mit dem Verhalten über alle Testframeworks hinweg.
Die folgenden CollectionAssert Methoden weisen gleichwertige Assert Methoden auf:
-
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
Achten Sie beim Migrieren von CollectionAssert zu " Assertauf die Änderung der Parameterreihenfolge für Contains, DoesNotContainund AllItemsAreInstancesOfType. In Assert, der erwartete Wert ist immer der erste Parameter.
Überladungen von AreEqual/AreNotEqual, die ein IComparer annehmen, werden übersprungen, weil Assert.AreSequenceEqual ein IEqualityComparer<T> erwartet (andere Semantik). Überladungen von AreEquivalent/AreNotEquivalent, die ein IEqualityComparer<T> annehmen, werden ebenfalls übersprungen.
IsSubsetOf
/
IsNotSubsetOf haben heute keine direkte Assert Entsprechung und werden nicht behandelt.
Wie man Verstöße behebt
Verwenden Sie den bereitgestellten Codekorrekturer, um Methodenaufrufe automatisch durch die entsprechenden CollectionAssert Methoden zu ersetzenAssert. Sie können die Methodenaufrufe bei Bedarf auch manuell ersetzen.
Wann sollten Warnungen unterdrückt werden?
Sie sollten keine Warnungen von dieser Regel unterdrücken. Die Assert Methoden bieten dieselbe Funktionalität mit besserer Konsistenz.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable MSTEST0068
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0068
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0068.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.