Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Property | Value |
|---|---|
| ID da regra | MSTEST0078 |
| Título | Os argumentos '[Depende]' devem ser válidos |
| Category | Usage |
| A correção é invasiva ou não invasiva | Inquebrável |
| Ativado por padrão | Sim |
| Severidade padrão | Warning |
| Introduzido na versão | 4.4.0 (pré-visualização) |
| Existe uma correção de código | Não |
Importante
Dependências de teste estão planeadas para o MSTest 4.4 e estão disponíveis apenas em versões pré-visualizadas até ao lançamento do MSTest 4.4.0.
Motivo
Um [DependsOn] atributo faz referência a um teste pelo nome, e a referência tem um problema que o framework de testes só pode decidir em tempo de execução, como um alvo que não existe.
Descrição da regra
A estrutura de testes trata deliberadamente um [DependsOn] alvo 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 a funcionar. Isto significa que um erro tipográfico ou uma renomeação elimina silenciosamente a ordem declarada em vez de falhar a compilação. Este analisador reporta os problemas que podem ser resolvidos em tempo de compilação:
- O método referenciado não existe no tipo referenciado.
- O membro referenciado não é um método de teste, por isso a dependência é ignorada.
- O tipo referenciado não é uma classe de teste, por isso a dependência é ignorada.
- O tipo referenciado é declarado noutro assembly (as dependências são resolvidas dentro de uma única fonte de teste).
- O tipo referenciado é abstrato, pelo que os seus testes são executados sob cada classe de teste derivada.
- O atributo faz com que um teste dependa de si próprio, o que é um ciclo de dependência que falha em tempo de execução.
- O atributo participa num 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 onde 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
Corrige o erro tipográfico ou renomeia, e usa nameof para que o compilador mantenha a referência sincronizada quando renomear o destino.
[TestMethod]
public void CreateCart() { }
[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }
Quando suprimir avisos
Não suprima avisos desta regra. Cada caso reportado por este analisador ou falha o teste dependente em tempo de execução, como uma autorreferência ou um ciclo, ou elimina silenciosamente a ordem declarada, como um erro tipográfico ou uma referência a um membro que não é do teste.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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.