Delen via


MSTEST0011: De methode ClassCleanup moet een geldige indeling hebben

Eigenschappen Weergegeven als
Regel-id MSTEST0011
Titel KlasseCleanup-methode moet een geldige indeling hebben
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld Ja
Standaard ernst Waarschuwing
Geïntroduceerd in versie 3.3.0
Is er een codeoplossing Ja

Oorzaak

Een methode die is gemarkeerd met [ClassCleanup] moet een geldige indeling hebben.

Beschrijving van regel

Methoden die zijn gemarkeerd met [ClassCleanup] , moeten de volgende indeling hebben om geldig te zijn:

  • kan niet worden gedeclareerd voor een algemene klasse zonder dat de InheritanceBehavior modus is ingesteld
  • het moet zijn public
  • het moet zijn static
  • het mag niet zijn async void
  • het mag geen speciale methode zijn (finalizer, operator...).
  • het mag niet algemeen zijn
  • er mag geen parameter worden gebruikt of vanaf MSTest 3.8 kan er één TestContext parameter worden gebruikt
  • retourtype moet zijn void, Task of ValueTask
  • InheritanceBehavior.BeforeEachDerivedClass kenmerkparameter moet worden opgegeven als de klasse is abstract.
  • InheritanceBehavior.BeforeEachDerivedClass kenmerkparameter mag niet worden opgegeven als de klasse is sealed.

Het type dat deze methoden declareren, moet ook de volgende regels respecteren:

  • Het type moet een class.
  • Dit class moet zijn public of internal (als het testproject het [DiscoverInternals] kenmerk gebruikt).
  • Het class zou niet moeten zijn static.
  • Als dit het class geval is sealed, moet deze worden gemarkeerd met [TestClass] (of een afgeleid kenmerk).
  • de klasse mag niet algemeen zijn

Schendingen oplossen

Zorg ervoor dat de methode overeenkomt met de hierboven beschreven indeling.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken. Als u deze regel negeert, worden gemarkeerde exemplaren overgeslagen of leiden ze tot runtimefouten.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Voor meer informatie, zie Hoe codeanalysewaarschuwingen onderdrukken.