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

Property Value
ID da regra MSTEST0082
Título Uma classe de teste herda um ciclo de vida ou método de teste de uma versão diferente do MSTest
Categoria Usage
A correção é invasiva ou não invasiva Inquebrável
Ativado por padrão Yes
Severidade padrão Warning
Introduzido na versão 4.4.0 (pré-visualização)
Existe uma correção de código No

Importante

Este analisador está planeado para o MSTest 4.4 e está disponível apenas em versões pré-visualizadas até ao lançamento do MSTest 4.4.0.

Cause

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

Descrição da regra

O MSTest faz corresponder os atributos de teste e de ciclo de vida com base na identidade exata do tipo em tempo de execução. MSTest v3 define estes atributos em Microsoft.VisualStudio.TestPlatform.TestFramework, enquanto MSTest v4 define-os em MSTest.TestFramework. Se uma biblioteca base e um projeto de teste derivado usarem versões principais diferentes, o adaptador ignora silenciosamente os atributos herdados da outra montagem do 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 testes partilhada construída com MSTest v3 pode declarar:

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

Um projeto MSTest v4 que deriva da classe base desencadeia 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 testes, e métodos de inicialização e limpeza de classes configurados para correr para classes derivadas.

Como corrigir violações

Referencie a mesma versão principal do MSTest na biblioteca base e no projeto de testes 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 desta regra. Uma violação significa que o MSTest ignora silenciosamente testes herdados ou métodos do ciclo de vida.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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.

Ver também