MSTEST0026 : éviter l’accès conditionnel dans les assertions
Propriété | Value |
---|---|
Identificateur de la règle | MSTEST0026 |
Titre | Éviter l’accès conditionnel dans les assertions |
Catégorie | Utilisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut | Oui |
Gravité par défaut | Infos |
Introduite dans la version | 3.5.0 |
Existe-t-il un correctif de code | Non |
Cause
Cette règle déclenche un diagnostic lorsqu’un argument contenant un opérateur conditionnel Null(?.)
ou ?[]
est passé aux méthodes d’assertion ci-dessous :
Assert.IsTrue
Assert.IsFalse
Assert.AreEqual
Assert.AreNotEqual
Assert.AreSame
Assert.AreNotSame
CollectionAssert.AreEqual
CollectionAssert.AreNotEqual
CollectionAssert.AreEquivalent
CollectionAssert.AreNotEquivalent
CollectionAssert.Contains
CollectionAssert.DoesNotContain
CollectionAssert.AllItemsAreNotNull
CollectionAssert.AllItemsAreUnique
CollectionAssert.AllItemsAreInstancesOfType
CollectionAssert.IsSubsetOf
CollectionAssert.IsNotSubsetOf
StringAssert.Contains
StringAssert.StartsWith
StringAssert.EndsWith
StringAssert.Matches
StringAssert.DoesNotMatch
Description de la règle
L’objectif des assertions dans les tests unitaires est de vérifier que certaines conditions sont remplies. Lorsqu’un opérateur d’accès conditionnel est utilisé dans une assertion, il introduit une condition supplémentaire qui peut ou non être remplie, en fonction de l’état de l’objet accessible. Cela peut entraîner des résultats de test incohérents et rendre le test moins clair.
Comment corriger les violations
Vérifiez que les arguments ne contiennent (?.)
pas ou ?[]
lorsqu’ils sont passés aux méthodes d’assertion. Au lieu de cela, effectuez des vérifications null avant d’effectuer l’assertion.
Company? company = GetCompany();
Assert.AreEqual("Contoso", company?.Name); // MSTEST0026
StringAssert.Contains(company?.Address, "Brazil"); // MSTEST0026
// Fixed code
Assert.IsNotNull(company);
Assert.AreEqual("Contoso", company.Name);
StringAssert.Contains(company.Address, "Brazil");
Quand supprimer les avertissements
Nous vous déconseillons de supprimer les avertissements de cette règle.