MSTEST0082: uma classe de teste herda um método de teste ou ciclo de vida de uma versão diferente do MSTest

Property Valor
ID da regra MSTEST0082
Título Uma classe de teste herda um método de teste ou ciclo de vida de uma versão diferente do MSTest
Categoria Usage
Correção interruptiva ou sem interrupção 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 No

Importante

Este analisador está planejado para MSTest 4.4 e está disponível apenas em builds de visualização até que o MSTest 4.4.0 seja lançado.

Cause

Uma classe de teste detectável herda um método de teste público ou um método de ciclo de vida de um assembly que faz referência a uma versão principal diferente do MSTest.

Descrição da regra

O MSTest faz a correspondência entre os atributos de teste e de ciclo de vida com base na identidade exata do tipo em tempo de execução. MSTest v3 define esses atributos em Microsoft.VisualStudio.TestPlatform.TestFramework, enquanto MSTest v4 define-os em MSTest.TestFramework. Se uma biblioteca base e um projeto de teste derivado tiverem versões principais diferentes, o adaptador ignora silenciosamente os atributos herdados do assembly do outro framework. Como resultado, os testes herdados não são descobertos e os métodos de inicialização ou limpeza herdados não são executados.

Por exemplo, uma biblioteca de teste compartilhada criada com MSTest v3 pode declarar:

public abstract class SharedTests
{
    [TestMethod] public void InheritedTest() { }
}

Um projeto MSTest v4 que deriva da classe base aciona o diagnóstico:

[TestClass]
public sealed class ProductTests : SharedTests { } // Violation

O analisador verifica métodos de teste herdados, métodos de inicialização e limpeza de teste e métodos de inicialização e limpeza de classe configurados para execução para classes derivadas.

Como corrigir violações

Faça referência à mesma versão principal do MSTest da biblioteca base e do projeto de teste derivado. Recompile o assembly que declara a classe base e, para um atributo personalizado derivado de um atributo MSTest, recompile o assembly que declara o atributo personalizado.

Quando suprimir avisos

Não suprima avisos dessa regra. Uma violação significa que o MSTest ignora silenciosamente testes herdados ou métodos de ciclo de vida.

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

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

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

Consulte também