MSTEST0072 : ' [AssemblyFixtureProvider] n’est pas pris en charge avec la compilation anticipée

Propriété Valeur
Identificateur de la règle MSTEST0072
Titre '[AssemblyFixtureProvider]' n’est pas pris en charge avec la compilation anticipée
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

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

Un projet s’applique [AssemblyFixtureProvider], directement ou via une bibliothèque référencée, lors de la publication avec Native AOT (PublishAot) ou Blazor WebAssembly AOT (RunAOTCompilation).

Description de la règle

[AssemblyFixtureProvider] la découverte guide le graphique de référence d’assembly runtime, ce qui nécessite que le runtime génère du code dynamique. Les versions de compilation anticipées telles que Native AOT et Blazor WebAssembly AOT ne peuvent pas générer de code dynamique. Par conséquent, le runtime ignore silencieusement la découverte et les méthodes du [AssemblyInitialize]/[AssemblyCleanup] dispositif ne s’exécutent jamais.

// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]

L’analyseur signale ce diagnostic si l’attribut est appliqué dans la compilation actuelle ou sur un assembly référencé, car l’utilisation du projet de test AOT natif perd silencieusement ses appareils d’assembly.

Comment corriger les violations

Déclarez les méthodes et [AssemblyCleanup] les [AssemblyInitialize] méthodes directement dans l’assembly de test au lieu de compter sur une bibliothèque partagée[AssemblyFixtureProvider].

public static class Fixtures
{
    [AssemblyInitialize]
    public static void Init(TestContext context) { }
}

Quand supprimer les avertissements

Ne supprimez pas les avertissements de cette règle pour un projet qui publie réellement avec Native AOT ou Blazor WebAssembly AOT, car les méthodes de montage ne s’exécutent pas et aucun état qu’ils configurent n’existeront pour vos tests. La suppression est raisonnable uniquement si la configuration publiée par AOT n’exécute pas les tests affectés.

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 MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072

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.MSTEST0072.severity = none

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

Voir aussi