Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
MSTEST0006: Evitare
| Property | Value |
|---|---|
| ID Regola | MSTEST0006 |
| Title | Evitare [ExpectedException] |
| Category | Design |
| La correzione causa un'interruzione o meno | Non-breaking |
| Abilitata per impostazione predefinita | Yes |
| Gravità predefinita | Avviso a partire dalla versione 3.10, Informazioni prima |
| Introdotto nella versione | 3.2.0 |
| È presente una correzione del codice | Sì, a partire dalla versione 3.7.0 |
Annotazioni
Questo analizzatore non è più rilevante per MSTest 4 perché l'attributo è stato rimosso.
Cause
Un metodo è contrassegnato con l'attributo [ExpectedException].
Descrizione regola
Preferire Assert.ThrowsException o Assert.ThrowsExceptionAsync (o Assert.ThrowsExactly/Assert.Throws o Assert.ThrowsExactlyAsync/Assert.ThrowsAsync se si usa MSTest 3.8 e versioni successive) sull'attributo [ExpectedException] perché garantisce che solo la riga di codice prevista generi l'eccezione prevista, anziché agire sull'intero corpo del test. Le API assert offrono anche maggiore flessibilità e consentono di asserire proprietà aggiuntive dell'eccezione.
[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();
}
}
Come correggere le violazioni
Sostituire l'utilizzo dell'attributo [ExpectedException] tramite una chiamata a Assert.ThrowsException o Assert.ThrowsExceptionAsync (o Assert.ThrowsExactly/Assert.Throws o Assert.ThrowsExactlyAsync/Assert.ThrowsAsync se si usa MSTest 3.8 e versioni successive).
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
// Arrange
var person = new Person
{
FirstName = "John",
LastName = "Doe",
};
person.SetAge(-1);
// Act
Assert.ThrowsExactly(() => person.GrowOlder());
}
}
Quando eliminare gli avvisi
È sicuro eliminare questa diagnostica quando il metodo di una sola riga.
[TestClass]
public class TestClass
{
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestMethod()
{
new Person(null);
}
}
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable MSTEST0006
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0006
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0006.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.