Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| 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.