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 |
Existuje oprava kódu | No |
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("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");
Kdy potlačit upozornění
Nedoporučujeme potlačit upozornění z tohoto pravidla.