MSTEST0010: o método ClassInitialize deve ter um layout válido

Propriedade Valor
ID da regra MSTEST0010
Título O método ClassInitialize deve ter um layout válido
Categoria Uso
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão Sim
Gravidade padrão Aviso
Introduzido na versão 3.3.0
Há uma correção de código Sim

Causa

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

Descrição da regra

Os métodos marcados com [ClassInitialize] devem seguir o seguinte layout para serem válidos:

  • não pode ser declarado em uma classe genérica sem que o modo InheritanceBehavior esteja definido
  • deve ser public
  • deve ser static
  • não deve ser async void
  • não deve ser um método especial (finalizador, operador...).
  • não deve ser genérico
  • deve receber um parâmetro do tipo TestContext
  • o tipo de retorno deve ser void, Task ou ValueTask
  • O parâmetro de atributo InheritanceBehavior.BeforeEachDerivedClass deve ser especificado se a classe for abstract.
  • O parâmetro de atributo InheritanceBehavior.BeforeEachDerivedClass não deve ser especificado se a classe for sealed.

O tipo que declara esses métodos também deve respeitar as seguintes regras:

  • O tipo deve ser um class.
  • O class deve ser public ou internal (se o projeto de teste estiver usando o atributo [DiscoverInternals]).
  • O class não deveria ser static.
  • Se class for sealed, deverá ser marcado com [TestClass] (ou um atributo derivado).
  • a classe não deve ser genérica

Como corrigir violações

Certifique-se de que o método corresponda ao layout descrito acima.

Quando suprimir avisos

Não suprima um aviso nessa regra. Se você ignorar esta regra, as instâncias sinalizadas serão ignoradas ou resultarão em um erro de runtime.