MSTEST0078: gli argomenti '[DependsOn]' devono essere validi

Proprietà Value
ID regola MSTEST0078
Titolo Gli argomenti '[DependsOn]' devono essere validi
Categoria Utilizzo
La modifica è dirompente o non dirompente Non rompente
Abilitato per impostazione predefinita
Gravità predefinita Avvertimento
introdotta nella versione 4.4.0 (anteprima)
È presente una correzione del codice No

Importante

Le dipendenze di test sono pianificate per MSTest 4.4 e sono disponibili solo nelle build di anteprima fino al rilascio di MSTest 4.4.0.

Cause

Un [DependsOn] attributo fa riferimento a un test in base al nome e il riferimento presenta un problema che il framework di test può decidere solo in fase di esecuzione, ad esempio una destinazione che non esiste.

Descrizione della regola

Il framework di test considera deliberatamente una [DependsOn] destinazione che non corrisponde a alcun test come avviso non irreversibile in fase di esecuzione, in modo che --filter e le esecuzioni a test singolo continuino a funzionare. Ciò significa che un errore di digitazione o una ridenominazione elimina automaticamente l'ordinamento dichiarato invece di non riuscire la compilazione. Questo analizzatore segnala i problemi che possono essere decisi in fase di compilazione:

  • Il metodo a cui si fa riferimento non esiste nel tipo a cui si fa riferimento.
  • Il membro a cui si fa riferimento non è un metodo di test, quindi la dipendenza viene ignorata.
  • Il tipo a cui si fa riferimento non è una classe di test, quindi la dipendenza viene ignorata.
  • Il tipo a cui si fa riferimento viene dichiarato in un altro assembly (le dipendenze vengono risolte all'interno di una singola origine di test).
  • Il tipo a cui si fa riferimento è astratto, quindi i relativi test vengono eseguiti in ogni classe di test derivata.
  • L'attributo rende un test dipendente da se stesso, ovvero un ciclo di dipendenza che ha esito negativo in fase di esecuzione.
  • L'attributo partecipa a un ciclo di dipendenza visibile nella compilazione, che non riesce a ogni test del ciclo in fase di esecuzione.
  • L'attributo viene applicato quando non ha alcun effetto, perché la destinazione dell'attributo non è un metodo di test o non esegue alcun test.
[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn("CreatCart")] // Violation: typo, no such member
public void AddItem() { }

Come correggere le violazioni

Correggere l'errore di digitatura o rinominare e usare nameof in modo che il compilatore mantenga sincronizzato il riferimento quando si rinomina la destinazione.

[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }

Quando eliminare gli avvisi

Non eliminare gli avvisi da questa regola. Ogni caso segnalato da questo analizzatore non riesce il test dipendente in fase di esecuzione, ad esempio un auto riferimento o un ciclo, oppure elimina automaticamente l'ordine dichiarato, ad esempio un errore di digitazione o un riferimento a un membro non test.

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 MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078

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.MSTEST0078.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche