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 | MSTEST0069 |
| Title | L’attribut [TestClass] hérité est ignoré par le générateur source MSTest |
| Catégorie | 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.3.0 |
| Existe-t-il une correction de code | Non |
Remarque
Cet analyseur est fourni dans le MSTest.SourceGeneration package et est chargé uniquement pour les projets qui ont choisi le générateur de source de réflexion MSTest, qui est une fonctionnalité expérimentale. Elle ne s’applique pas lorsque la découverte basée sur la réflexion par défaut est utilisée.
Cause
Une classe est considérée comme une classe de test MSTest via un attribut [TestClass] qu’elle hérite d’une classe de base, plutôt que de déclarer [TestClass] directement.
Description de la règle
Le générateur de source MSTest énumère les classes de test en utilisant ForAttributeWithMetadataName, lequel ne prend pas en charge l’héritage. Une classe qui repose sur l’héritage [TestClass] d’un type de base est ignorée sans avertissement lors de la détection générée à partir du code source et ne sera pas exécutable lorsque le fournisseur généré à partir du code source est le back-end de réflexion actif.
[TestClass]
public class BaseTests
{
}
// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Comment corriger les violations
Appliquez [TestClass] directement à la classe dérivée pour qu’elle soit découverte lorsque la découverte générée par la source est active.
[TestClass]
public class BaseTests
{
}
[TestClass]
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Quand supprimer les avertissements
Ne supprimez pas les avertissements de cette règle lorsque la génération de source est activée, car la classe de test affectée ne sera pas découverte ou exécutée. Vous pouvez la supprimer si la classe n’est pas réellement destinée à être une classe de 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 MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069
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.MSTEST0069.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.