MSTEST0082: una classe di test eredita un ciclo di vita o un metodo di test da una versione MSTest diversa

Proprietà Valore
ID della regola MSTEST0082
Title Una classe di test eredita un ciclo di vita o un metodo di test da una versione MSTest diversa
Categoria Usage
La modifica è dirompente o non dirompente Non rompente
Abilitato per impostazione predefinita Yes
Gravità predefinita Avvertimento
introdotta nella versione 4.4.0 (anteprima)
È presente una correzione del codice No

Important

Questo analizzatore è pianificato per MSTest 4.4 ed è disponibile solo nelle build di anteprima fino al rilascio di MSTest 4.4.0.

Cause

Una classe di test individuabile eredita un metodo di test pubblico o un metodo del ciclo di vita da un assembly che fa riferimento a una versione principale diversa di MSTest.

Descrizione della regola

MSTest corrisponde agli attributi di test e ciclo di vita in base all'identità esatta del tipo di runtime. MSTest v3 definisce questi attributi in Microsoft.VisualStudio.TestPlatform.TestFramework, mentre MSTest v4 li definisce in MSTest.TestFramework. Se una libreria di base e un progetto di test derivato usano versioni principali diverse, l'adattatore ignora automaticamente gli attributi ereditati dall'altro assembly del framework. Di conseguenza, i test ereditati non vengono individuati e i metodi di inizializzazione o pulizia ereditati non vengono eseguiti.

Ad esempio, una libreria di test condivisa compilata con MSTest v3 potrebbe dichiarare:

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

Un progetto MSTest v4 che deriva dalla classe di base attiva la diagnostica:

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

L'analizzatore controlla i metodi di test ereditati, i metodi di inizializzazione e pulizia dei test e i metodi di inizializzazione e pulizia delle classi configurati per l'esecuzione per le classi derivate.

Come correggere le violazioni

Fare riferimento alla stessa versione principale di MSTest dalla libreria di base e dal progetto di test derivato. Ricompilare l'assembly che dichiara la classe base e, per un attributo personalizzato derivato da un attributo MSTest, ricompilare l'assembly che dichiara l'attributo personalizzato.

Quando eliminare gli avvisi

Non eliminare gli avvisi da questa regola. Una violazione indica che MSTest ignora automaticamente i test ereditati o i metodi del ciclo di vita.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable MSTEST0082
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0082

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche