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é | Valeur |
|---|---|
| Identificateur de la règle | MSTEST0078 |
| Titre | Les arguments '[DependsOn]' doivent être valides |
| Category | Usage |
| Le correctif a un effet disruptif ou non disruptif | Non-breaking |
| Activé par défaut | Yes |
| Sévérité par défaut | Warning |
| Introduit dans la version | 4.4.0 (préversion) |
| Existe-t-il une correction de code | No |
Important
Les dépendances de test sont planifiées pour MSTest 4.4 et sont disponibles uniquement dans les versions préliminaires jusqu’à la publication de MSTest 4.4.0.
Cause
Un [DependsOn] attribut fait référence à un test par nom, et la référence a un problème que l’infrastructure de test peut décider uniquement au moment de l’exécution, comme une cible qui n’existe pas.
Description de la règle
Le framework de test traite délibérément une [DependsOn] cible qui ne correspond à aucun test comme un avertissement non fatal au moment de l’exécution, afin que --filter les exécutions à test unique continuent de fonctionner. Cela signifie qu’une faute de frappe ou un renommage supprime silencieusement l’ordre déclaré au lieu d’échouer la build. Cet analyseur signale les problèmes qui peuvent être décidés au moment de la génération :
- La méthode référencée n’existe pas sur le type référencé.
- Le membre référencé n’est pas une méthode de test. Par conséquent, la dépendance est ignorée.
- Le type référencé n’est pas une classe de test. Par conséquent, la dépendance est ignorée.
- Le type référencé est déclaré dans un autre assembly (les dépendances sont résolues dans une source de test unique).
- Le type référencé est abstrait. Ses tests s’exécutent donc sous chaque classe de test dérivée à la place.
- L’attribut fait dépendre un test lui-même, qui est un cycle de dépendance qui échoue au moment de l’exécution.
- L’attribut participe à un cycle de dépendance visible dans la compilation, qui échoue chaque test du cycle au moment de l’exécution.
- L’attribut est appliqué là où il n’a aucun effet, car la cible d’attribut n’est pas une méthode de test ou n’exécute aucun test.
[TestMethod]
public void CreateCart() { }
[TestMethod, DependsOn("CreatCart")] // Violation: typo, no such member
public void AddItem() { }
Comment corriger les violations
Corrigez la faute de frappe ou renommez-la et utilisez nameof pour que le compilateur conserve la référence synchronisée lorsque vous renommez la cible.
[TestMethod]
public void CreateCart() { }
[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }
Quand supprimer les avertissements
Ne supprimez pas les avertissements de cette règle. Chaque cas signalé par cet analyseur échoue le test dépendant au moment de l’exécution, tel qu’une référence auto-référence ou un cycle, ou supprime silencieusement l’ordre déclaré, tel qu’une faute de frappe ou une référence à un membre non test.
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 MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078
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.MSTEST0078.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.