MSTEST0006: Vyhněte se [ExpectedException]
Vlastnost | Hodnota |
---|---|
ID pravidla | MSTEST0006 |
Název | Se zabránilo [ExpectedException] |
Kategorie | Návrh |
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.2.0 |
Příčina
Metoda je označena atributem [ExpectedException]
.
Popis pravidla
Preferujte Assert.ThrowsException
nebo Assert.ThrowsExceptionAsync
nad atributem [ExpectedException]
, protože zajišťuje, že pouze očekávaný řádek kódu vyvolá očekávanou výjimku místo toho, aby se chytá na celý text testu. Rozhraní API assert také poskytují větší flexibilitu a umožňují uplatnit další vlastnosti výjimky.
[TestClass]
public class TestClass
{
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))] // Violation
public void TestMethod()
{
// Arrange
var person = new Person
{
FirstName = "John",
LastName = "Doe",
};
person.SetAge(-1);
// Act
person.GrowOlder();
}
}
Jak opravit porušení
Nahraďte použití atributu [ExpectedException]
voláním Assert.ThrowsException
nebo Assert.ThrowsExceptionAsync
.
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
// Arrange
var person = new Person
{
FirstName = "John",
LastName = "Doe",
};
person.SetAge(-1);
// Act
Assert.ThrowsException(() => person.GrowOlder());
}
}
Kdy potlačit upozornění
Tuto diagnostiku je bezpečné potlačit, když je metoda jednoslůžkovou vložkou.
[TestClass]
public class TestClass
{
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestMethod()
{
new Person(null);
}
}
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro