MSTEST0013: Metoda AssemblyCleanup powinna mieć prawidłowy układ

Właściwość Wartość
Identyfikator reguły MSTEST0013
Tytuł Metoda AssemblyCleanup powinna mieć prawidłowy układ
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niedzielący
Domyślnie włączone Tak
Ważność domyślna Ostrzeżenie
Wprowadzone w wersji 3.3.0
czy istnieje poprawka kodu Tak

Przyczyna

Metoda oznaczona elementem [AssemblyCleanup] powinna mieć prawidłowy układ.

Opis reguły

MSTest wywołuje [AssemblyCleanup], aby zwolnić zasoby całego zestawu po zakończeniu testów zestawu:

Requirement Powód
Metoda to public static. Narzędzie MSTest odnajduje publiczny punkt wejścia cyklu życia i wywołuje go bez wystąpienia klasy testowej. Czyszczenie złożenia nie może zależeć od stanu jednej instancji testu.
Metoda jest zwykła i nie jest abstract ani generyczna. Biblioteka MSTest wymaga ciała metody, które może zostać wywołane bez specjalnych reguł wywołania lub argumentów typu metody.
Metoda nie ma parametrów lub ma jeden parametr TestContext w programie MSTest 3.8 lub nowszym. Narzędzie MSTest może wywołać czyszczenie bez argumentów lub podać kontekst czyszczenia zestawu. Nie dostarcza argumentów pojedynczego testu.
Zwracany typ to void, Task, lub ValueTask, a metoda nie jest async void. Narzędzie MSTest musi czekać na asynchroniczne zwolnienie zasobów i uwzględniać niepowodzenia podczas oczyszczania przed ukończeniem cyklu życia zestawu.
Typ deklarujący jest klasą niegeneryczną oznaczoną za pomocą [TestClass] lub atrybutu pochodnego. Narzędzie MSTest lokalizuje wywołania zwrotne zestawu za pośrednictwem kontenerów klasy testowej. Kontener niegeneryczny identyfikuje funkcję wywołania zwrotnego bez wymagania argumentów typu klasy. Kontener może być statyczny.
Deklarowana klasa to public, lub internal z [assembly: DiscoverInternals]. Kontener musi być dostępny dla mechanizmu odnajdywania MSTest. Odnajdywanie wewnętrzne nie zmienia wymagania, że sam callback jest publiczny.

Jak naprawić naruszenia

Upewnij się, że metoda jest zgodna z układem opisanym powyżej.

Kiedy pomijać ostrzeżenia

Nie wyciszaj ostrzeżenia z tej reguły. Jeśli zignorujesz tę regułę, oflagowane wystąpienia zostaną pominięte lub spowodują błąd wykonania.

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

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

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

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