MSTEST0006: Vermeiden von [ExpectedException]
Eigenschaft | Wert |
---|---|
Regel-ID | MSTEST0006 |
Titel | Vermeiden von [ExpectedException] |
Kategorie | Design |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig aktiviert | Ja |
Standardschweregrad | Info |
Eingeführt in Version | 3.2.0 |
Ursache
Eine Methode ist mit dem [ExpectedException]
-Attribut gekennzeichnet.
Regelbeschreibung
Bevorzugen Sie Assert.ThrowsException
oder Assert.ThrowsExceptionAsync
gegenüber [ExpectedException]
, da so sichergestellt wird, dass nur die erwartete Codezeile die erwartete Ausnahme auslöst, anstatt den gesamten Textkörper des Tests zu verarbeiten. Die Assert-APIs bieten zudem mehr Flexibilität und ermöglichen es Ihnen, zusätzliche Eigenschaften der Ausnahme zu bestätigen.
[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();
}
}
Behandeln von Verstößen
Ersetzen Sie die Verwendung des [ExpectedException]
-Attributs durch einen Aufruf von Assert.ThrowsException
oder 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());
}
}
Wann sollten Warnungen unterdrückt werden?
Es ist sicher, diese Diagnose zu unterdrücken, wenn die Methode einzeilig ist.
[TestClass]
public class TestClass
{
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestMethod()
{
new Person(null);
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für