Sdílet prostřednictvím


MSTEST0026: Vyhněte se podmíněnému přístupu v kontrolních výrazech

Vlastnost Hodnota
ID pravidla MSTEST0026
Název Vyhněte se podmíněnému přístupu v kontrolních výrazech
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení Ano
Výchozí závažnost Informace
Představeno ve verzi 3.5.0

Příčina

Toto pravidlo vyvolá diagnostiku, pokud je argument obsahující podmíněný operátor (?.) null nebo ?[] předán následující metody kontrolního výrazu:

  • 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

Popis pravidla

Účelem kontrolníchvýrazchch Pokud je operátor podmíněného přístupu použit v kontrolním výrazu, zavádí další podmínku, která může nebo nemusí být splněna v závislosti na stavu objektu, ke kterému se přistupuje. To může vést k nekonzistentním výsledkům testů a testování bude méně jasné.

Jak opravit porušení

Ujistěte se, že argumenty neobsahují (?.) metody kontrolního výrazu nebo ?[] při předání metodám kontrolního výrazu. Místo toho před provedením kontrolního výrazu proveďte kontroly null.

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");

Kdy potlačit upozornění

Nedoporučujeme potlačit upozornění z tohoto pravidla.