MSTEST0034: użyj ClassCleanupBehavior.EndOfClass z [ClassCleanup]

Property Value
Identyfikator reguły MSTEST0034
Title Użyj ClassCleanupBehavior.EndOfClass z [ClassCleanup].
Category Usage
Poprawka jest niekompatybilna lub kompatybilna wstecz Non-breaking
Domyślnie włączone Yes
domyślna ciężkość Info
Wprowadzone w wersji 3.6.0
czy istnieje poprawka kodu No

Uwaga / Notatka

Ten analizator nie jest już odpowiedni dla msTest 4, ponieważ ClassCleanupBehavior został usunięty.

Cause

Ta reguła zgłasza diagnostykę, gdy nie ustawiono ClassCleanupBehavior.EndOfClass za pomocą [ClassCleanup].

Opis reguły

W MSTest 3 domyślny [ClassCleanup] moment to koniec zestawu, a nie koniec klasy. To opóźnienie może przetrzymywać zasoby należące do klasy, takie jak pliki lub połączenia, podczas gdy niepowiązane klasy nadal działają.

Aby zwolnić zasoby po zakończeniu testów należących do danej klasy, użyj polecenia ClassCleanupBehavior.EndOfClass. Jeśli zasób celowo należy do całego złożenia, należy zamiast tego wyrazić ten cykl życia za pomocą [AssemblyCleanup]. MSTest 4 usuwa ClassCleanupBehavior i używa czyszczenia na końcu klasy.

Jak naprawić naruszenia

Użyj [ClassCleanup(ClassCleanupBehavior.EndOfClass)].

Kiedy wyciszać ostrzeżenia

Nie zaleca się pomijania ostrzeżeń z tej reguły, ponieważ zamiast tego można użyć [AssemblyCleanup].

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.