Partilhar via


MSTEST0018: DynamicData deve ser válido

Property valor
ID da regra MSTEST0018
Título DynamicData deve ser válido
Categoria Utilização
A correção está quebrando ou não quebrando Sem quebra
Ativado por padrão Sim
Severidade padrão Aviso
Introduzido na versão 3.6.0

Motivo

Um método marcado com [DynamicData] deve ter layout válido.

Descrição da regra

Os métodos marcados com [DynamicData] também devem ser marcados com [TestMethod] (ou um atributo derivado).

O membro da "fonte de dados" fez referência:

  • deve existir no tipo especificado (classe atual se nenhum tipo for especificado)
  • não deve ter sobrecargas
  • deve ser do mesmo tipo (método ou propriedade) que a DataSourceType propriedade
  • deve ser static
  • não deve ser genérico
  • deve ser sem parâmetros
  • deve devolver IEnumerable<object[]>, IEnumerable<Tuple<T,...>>, ou IEnumerable<ValueTuple<,...>>

O membro "nome de exibição" fez referência:

  • deve existir no tipo especificado (classe atual se nenhum tipo for especificado)
  • não deve ter sobrecargas
  • deve ser um método
  • deve ser static
  • não deve ser genérico
  • deve voltar string
  • deve tomar exatamente 2 parâmetros, sendo o primeiro e MethodInfo o segundo object[]

Exemplo:

public static string GetDisplayName(MethodInfo methodInfo, object[] data)
{
    return string.Format("{0} ({1})", methodInfo.Name, string.Join(",", data));
}

Como corrigir violações

Certifique-se de que o atributo corresponde às condições descritas acima.

Quando suprimir avisos

Não suprima um aviso desta regra. Se você ignorar essa regra, as instâncias sinalizadas serão ignoradas ou resultarão em erro de tempo de execução.

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

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração .

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

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