MSTEST0068 : Utiliser Assert au lieu de CollectionAssert

Propriété Value
Identificateur de la règle MSTEST0068
Titre Utiliser Assert au lieu de CollectionAssert
Catégorie Usage
Le correctif a un effet disruptif ou non disruptif Non-breaking
Activé par défaut Oui
Sévérité par défaut Informations
Introduit dans la version 4.3.0
Existe-t-il une correction de code Oui

Note

Cette règle est disponible à partir de MSTest 4.3.

Cause

Une méthode de test utilise des CollectionAssert méthodes plutôt que des méthodes équivalentes Assert .

Description de la règle

La plupart des méthodes CollectionAssert ont leurs équivalents dans Assert, qui offrent la même fonctionnalité. Préférez les méthodes Assert pour plus de cohérence, une meilleure lisibilité, une meilleure découvrabilité et un alignement avec le comportement de tous les frameworks de test.

Les méthodes suivantes CollectionAssert ont des méthodes équivalentes Assert :

  • 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

Lors de la migration vers CollectionAssertAssert, soyez prudent sur la modification dans l’ordre des paramètres pour Contains, DoesNotContainet AllItemsAreInstancesOfType. Dans Assert, la valeur attendue est toujours le premier paramètre.

Les surcharges de AreEqual/AreNotEqual qui prennent un IComparer sont ignorées, car Assert.AreSequenceEqual attend un IEqualityComparer<T> (la sémantique est différente). Les surcharges de AreEquivalent/AreNotEquivalent qui prennent un IEqualityComparer<T> sont également ignorées. IsSubsetOf / IsNotSubsetOf n’ont pas d’équivalent direct Assert aujourd’hui et ne sont pas gérés.

Comment corriger les violations

Utilisez le correcteur de code fourni pour remplacer automatiquement les appels aux méthodes CollectionAssert par leurs équivalents Assert. Vous pouvez également remplacer manuellement les appels de méthode si nécessaire.

Quand supprimer les avertissements

Ne supprimez pas les avertissements de cette règle. Les Assert méthodes fournissent les mêmes fonctionnalités avec une meilleure cohérence.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.