MSTEST0019: Preferuj metody TestInitialize nad konstruktorami

Właściwość Wartość
Identyfikator reguły MSTEST0019
Tytuł Preferuj metody TestInitialize nad konstruktorami
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 w klasie testowej zadeklarowano jawny konstruktor bez parametrów (klasa oznaczona jako [TestClass]).

Opis reguły

Aby użyć jednej konwencji konfiguracji dla testów synchronicznych i asynchronicznych, preferuj .[TestInitialize] Konstruktor nie może zwrócić do MSTest operacji oczekiwalnej, natomiast program uruchamiający może oczekiwać na obiekt Task lub ValueTask zwrócony przez metodę inicjalizacji testu przed rozpoczęciem testu.

Konstruktory są nadal obsługiwane w przypadku instalacji synchronicznej. Ta reguła wyraża konwencję zgody, a nie wymaganie środowiska uruchomieniowego. MSTEST0020 oferuje alternatywną konwencję konfiguracji opartej na konstruktorach; nie włączaj obu konkurencyjnych konwencji.

Jak naprawić naruszenia

Przenieś inicjalizację z konstruktora bezparametrowego do metody [TestInitialize].

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

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

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

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