MSTEST0020: Preferuj konstruktory za pośrednictwem metod TestInitialize

Właściwość Wartość
Identyfikator reguły MSTEST0020
Tytuł Preferuj konstruktory za pośrednictwem metod TestInitialize
Kategoria Projekt
Poprawka powodująca niezgodność lub niepowodująca niezgodności Nienaruszający zgodności
Domyślnie włączone Nie
Domyślny poziom ważności Info
Wprowadzone w wersji 3.4.0
czy istnieje poprawka kodu Tak

Przyczyna

Ta reguła zgłasza diagnostykę, gdy istnieje metoda void [TestInitialize] .

Opis reguły

W przypadku konfiguracji synchronicznej konstruktor umożliwia przypisać pola readonly i umożliwia kompilatorowi sprawdzenie, czy składowe niedopuszczające wartości null są inicjowane, zanim konstrukcja obiektu zostanie zakończona. Kompilator nie wie, że narzędzie MSTest wywoła późniejszą metodę [TestInitialize], dlatego konfiguracja w niej nie zapewnia tych samych gwarancji inicjalizacji konstruktora.

[TestInitialize] jest nadal obsługiwana i jest odpowiednia dla konfiguracji asynchronicznej. Ta reguła wyraża konwencję dobrowolnego stosowania, a nie wymóg w czasie wykonywania. MSTEST0019 udostępnia alternatywną konwencję dla metod inicjalizacji testów; nie włączaj obu alternatywnych konwencji.

Jak naprawić naruszenia

Zastąp [TestInitialize] zwracające void konstruktorami.

Kiedy wyłączać ostrzeżenia

Zwykle nie chcesz pomijać ostrzeżeń z tej reguły, jeśli zdecydujesz się ją włączyć.

Uwaga

Ta reguła jest włączona. Nie jest ona włączona nawet w przypadku korzystania z <MSTestAnalysisMode>All</MSTestAnalysisMode>. Aby uzyskać więcej informacji na temat MSTestAnalysisMode, zobacz analizę kodu MSTest.

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

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

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

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