MSTEST0072: "[AssemblyFixtureProvider]" stöds inte med kompilering i förväg

Property Value
Regel-ID MSTEST0072
Titel "[AssemblyFixtureProvider]" stöds inte med kompilering i förväg
Kategori Usage
Korrigeringen är antingen brytande eller icke-brytande Oumbrytbar
Aktiverad som standard Yes
Standard allvarlighetsgrad Varning
introducerades i version 4.4.0 (förhandsversion)
Finns det en kodkorrigering No

Important

Den här analysatorn är planerad för MSTest 4.4 och är endast tillgänglig i förhandsversioner tills MSTest 4.4.0 släpps.

Orsak

Ett projekt gäller [AssemblyFixtureProvider], antingen direkt eller via ett refererat bibliotek, vid publicering med intern AOT (PublishAot) eller Blazor WebAssembly AOT (RunAOTCompilation).

Regelbeskrivning

[AssemblyFixtureProvider] identifieringen vägleder referensdiagrammet för körningssammansättningen, vilket kräver körning för att generera dynamisk kod. Kompileringssmaker i förväg som Native AOT och Blazor WebAssembly AOT kan inte generera dynamisk kod, så körningen hoppar tyst över identifieringen och fixturens [AssemblyInitialize]/[AssemblyCleanup] metoder körs aldrig.

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

Analysatorn rapporterar den här diagnostiken om attributet tillämpas i den aktuella kompileringen eller på en refererad sammansättning, eftersom det förbrukande interna AOT-testprojektet tyst förlorar sina sammansättningsarmaturer.

Så här åtgärdar du överträdelser

[AssemblyInitialize] Deklarera metoderna och [AssemblyCleanup] direkt i testsammansättningen i stället för att förlita sig på ett delat [AssemblyFixtureProvider] bibliotek.

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

När du ska ignorera varningar

Utelämna inte varningar från den här regeln för ett projekt som faktiskt publicerar med native AOT eller Blazor WebAssembly AOT, eftersom matchningsmetoderna inte körs och något tillstånd som de har konfigurerat inte finns för dina tester. Undertryckning är endast rimligt om den AOT-publicerade konfigurationen inte kör de berörda testerna.

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0072.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även