MSTEST0078 : les arguments '[DependsOn]' doivent être valides

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.

Voir aussi