Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| 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.