MSTEST0082 : une classe de test hérite d’un cycle de vie ou d’une méthode de test d’une autre version MSTest

Propriété Value
Identificateur de la règle MSTEST0082
Titre Une classe de test hérite d’un cycle de vie ou d’une méthode de test d’une autre version MSTest
Catégorie Usage
Le correctif a un effet disruptif ou non disruptif Non-breaking
Activé par défaut Oui
Sévérité par défaut Warning
Introduit dans la version 4.4.0 (préversion)
Existe-t-il une correction de code Non

Important

Cet analyseur est planifié pour MSTest 4.4 et est disponible uniquement dans les versions préliminaires jusqu’à la publication de MSTest 4.4.0.

Cause

Une classe de test détectable hérite d’une méthode de test publique ou d’une méthode de cycle de vie d’un assembly qui fait référence à une autre version majeure de MSTest.

Description de la règle

MSTest fait correspondre les attributs de test et de cycle de vie en fonction de l’identité exacte du type au moment de l’exécution. MSTest v3 définit ces attributs dans Microsoft.VisualStudio.TestPlatform.TestFramework, tandis que MSTest v4 les définit dans MSTest.TestFramework. Si une bibliothèque de base et un projet de test dérivé utilisent différentes versions majeures, l’adaptateur ignore silencieusement les attributs hérités de l’autre assembly framework. Par conséquent, les tests hérités ne sont pas découverts et les méthodes d’initialisation ou de nettoyage héritées ne s’exécutent pas.

Par exemple, une bibliothèque de test partagée générée avec MSTest v3 peut déclarer :

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

Un projet MSTest v4 qui dérive de la classe de base déclenche le diagnostic :

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

L’analyseur vérifie les méthodes de test héritées, l’initialisation des tests et les méthodes de nettoyage, ainsi que les méthodes d’initialisation et de nettoyage de classes configurées pour s’exécuter pour les classes dérivées.

Comment corriger les violations

Référencez la même version principale MSTest à partir de la bibliothèque de base et du projet de test dérivé. Recompilez l’assembly qui déclare la classe de base et, pour un attribut personnalisé dérivé d’un attribut MSTest, recompilez l’assembly qui déclare l’attribut personnalisé.

Quand supprimer les avertissements

Ne supprimez pas les avertissements de cette règle. Une violation signifie que MSTest ignore silencieusement les tests hérités ou les méthodes de cycle de vie.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.

Voir aussi