Megosztás a következőn keresztül:


MSTEST0026: A feltételes hozzáférés elkerülése az állításokban

Tulajdonság Érték
Szabályazonosító MSTEST0026
Cím A feltételes hozzáférés elkerülése az állításokban
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve Igen
Alapértelmezett súlyosság Információ
Bevezetés a verzióba 3.5.0

Ok

Ez a szabály akkor hoz létre diagnosztikát, ha egy null feltételes operátort(?.)?[] tartalmazó argumentumot ad át az alábbi helyességi módszereknek:

  • 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

Szabály leírása

Az egységtesztekben szereplő állítások célja bizonyos feltételek teljesülésének ellenőrzése. Ha egy feltételes hozzáférési operátort használ egy helyességi feltételben, egy további feltételt vezet be, amely az elérni kívánt objektum állapotától függően teljesülhet vagy nem teljesülhet. Ez inkonzisztens teszteredményekhez vezethet, és kevésbé egyértelművé teheti a tesztet.

Szabálysértések kijavítása

Győződjön meg arról, hogy az argumentumok nem tartalmazzák (?.) vagy ?[] továbbítják az állítási módszereknek. Ehelyett végezze el a null értékű ellenőrzéseket az állítás végrehajtása előtt.

Company? company = GetCompany();
Assert.AreEqual(company?.Name, "Contoso"); // MSTEST0026
StringAssert.Contains(company?.Address, "Brazil"); // MSTEST0026

// Fixed code
Assert.IsNotNull(company);
Assert.AreEqual(company.Name, "Contoso");
StringAssert.Contains(company.Address, "Brazil");

Mikor kell letiltani a figyelmeztetéseket?

Nem javasoljuk, hogy letiltsa a szabály figyelmeztetéseit.