MSTEST0078: argumentos '[DependsOn]' devem ser válidos

Property Value
ID da regra MSTEST0078
Título Os argumentos '[DependsOn]' devem ser válidos
Categoria Uso
Correção é disruptiva ou não disruptiva Inquebrável
Habilitado por padrão Sim
Severidade padrão Warning
introduzido na versão 4.4.0 (versão prévia)
Há uma correção de código Não

Importante

As dependências de teste são planejadas para o MSTest 4.4 e estão disponíveis apenas em builds de visualização até que o MSTest 4.4.0 seja lançado.

Cause

Um [DependsOn] atributo faz referência a um teste por nome e a referência tem um problema que a estrutura de teste pode decidir somente em tempo de execução, como um destino que não existe.

Descrição da regra

A estrutura de teste trata deliberadamente um [DependsOn] destino que não corresponde a nenhum teste como um aviso não fatal em tempo de execução, para que --filter as execuções de teste único continuem funcionando. Isso significa que um erro de digitação ou uma renomeação descarta silenciosamente a ordem declarada em vez de falhar no build. Este analisador relata os problemas que podem ser decididos no momento da compilação:

  • O método referenciado não existe no tipo referenciado.
  • O membro referenciado não é um método de teste, portanto, a dependência é ignorada.
  • O tipo referenciado não é uma classe de teste, portanto, a dependência é ignorada.
  • O tipo referenciado é declarado em outro assembly (as dependências são resolvidas em uma única fonte de teste).
  • O tipo referenciado é abstrato, portanto, seus testes são executados em cada classe de teste derivada.
  • O atributo faz com que um teste dependa de si mesmo, que é um ciclo de dependência que falha em tempo de execução.
  • O atributo participa de um ciclo de dependência visível na compilação, que falha em todos os testes do ciclo em tempo de execução.
  • O atributo é aplicado quando não tem efeito, porque o destino do atributo não é um método de teste ou não executa nenhum teste.
[TestMethod]
public void CreateCart() { }

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

Como corrigir violações

Corrija o erro de digitação ou renomeie e use nameof para que o compilador mantenha a referência em sincronia quando você renomear o destino.

[TestMethod]
public void CreateCart() { }

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

Quando suprimir avisos

Não suprima avisos dessa regra. Cada caso relatado por esse analisador falha no teste dependente em tempo de execução, como uma auto-referência ou um ciclo, ou descarta silenciosamente a ordenação declarada, como um erro de digitação ou uma referência a um membro que não é de teste.

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.

#pragma warning disable MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0078.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também