MSTEST0068: Verwenden von Assert anstelle von CollectionAssert

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.